#!/usr/bin/python

#Python3 文件

from urllib import request
import pprint,pickle
'''
读和写文件
open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode)
    filename:filename 变量是一个包含了你要访问的文件名称的字符串值。
    mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")   #w' 只用于写 (如果存在同名文件则将被删除)
file.write("hello world!\n how are you? do you miss me?")
file.close()

'''
文件对象的方法
f.read()为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")   #windows路径下的反斜杠需要转义~只要\\就好, linux就不转义,就/不转义
content = file.read()
print(content)
file.close()

#f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
content = file.readline()
print(content)
file.close()

'''
f.readlines() 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
content = file.readlines()
print(content)
file.close()

#另一种方式是迭代一个文件对象然后读取每行: 这个方法很简单, 但是并没有提供一个很好的控制。 因为两者的处理机制不同, 最好不要混用。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
for line in file:
    print(line, end = "\n")
file.close()

#f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("i love you!")
print("num = ", num)
file.close()

#如果要写入一些不是字符串的东西, 那么将需要先进行转换:
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
tup1 = ("good", 666)
content = str(tup1)
num = file.write(content)
print("num = ", num)
file.close()

'''
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
    seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
    seek(x,1) : 表示从当前位置往后移动x个字符
    seek(-x,2):表示从文件的结尾往前移动x个字符
from_what 值为默认为0,即文件开头。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("123456789")
print("num = ", num)
location = file.seek(5)
print("location = ", location)
location = file.seek(2, 0)
print("location = ", location)
file.close()    
    
'''
f.close(),在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。
而且写起来也比 try - finally 语句块要简短:
'''
#方法一
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("123456789")
file.close()
#方法二
'''
with open("D:\\hejing\\桌面\\python\\test\\text.txt", "w") as file
file.write("123456789")
print("file.closed : ", file.closed)
'''

'''
 python的pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:pickle.dump(obj, file, [,protocol])
有了 pickle 这个对象, 就能对 file 以读取的形式打开:
x = pickle.load(file)
'''
data1 = {"name":"zhangsan", "age":18, "sex":"boy", "loves":["apple", "pear", "banana"]}
data2 = [1,2,3,4,5,6]
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "wb")
pickle.dump(data1, file)
pickle.dump(data2, file)
file.close()

file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "rb")
data1 = pickle.load(file)
data2 = pickle.load(file)
print("data1 = ", data1, "  #######data2 = ", data2)
file.close()

#文件写入也可以进行网站爬虫
response = request.urlopen("http://www.baidu.com")
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
file.write(str(response.read()))
file.close()

python系列十四:Python3 文件的更多相关文章

  1. python系列十:python3函数

    #!/usr/bin/python #-*-coding:gbk-*- '''函数的简单规则:    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().    任何传入参数和自变量必 ...

  2. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  3. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  4. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  5. 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

    孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...

  6. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  7. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  8. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...

  9. python第二十九课——文件读写(读取读取中文字符)

    演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...

随机推荐

  1. wireshark过滤语法总结 (转载)

    做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...

  2. C#创建一个Window服务

    Window服务介绍 Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示 ...

  3. Android 关于ZXing的使用

    1.http://blog.csdn.net/ryantang03/article/details/7831826 2.http://blog.csdn.net/xiaanming/article/d ...

  4. 指尖上的电商---(8)Solr中Facet的使用方法

    在大型电子商务站点中,在商品列表页,我们都能够看到商品按分类,品牌,价格的分类显示,例如以下图,这些我们能够使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. ...

  5. cadence原理图和PCB互联显示成功但是不能高亮和database

    问题现象:cadence原理图和PCB互联显示成功但是不能高亮我的问题 解决:尝试修复数据库试试,Tools->Database check 提醒:有一个封装非法命名,在原理图中修改后 再次保存 ...

  6. Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾

    Atitit.播放系统规划新版本 v4  q18  and 最近版本回顾 1 版本12 (ing)4 1.1 无映射nas系统..4 1.2 图片简介搜刮其4 1.3 12.8. 电影图片增加png, ...

  7. mysql官网下载页面

    http://dev.mysql.com/downloads/mysql/5.6.html#downloads

  8. WebLogic配置自己定义密钥库和SSL的操作手冊

    WebLogic配置自己定义密钥库和SSL的操作手冊 (定制标识和定制信任&Keytool&TLS1.0) 1.启用SSLport 保存.重新启动受管Server watermark/ ...

  9. docker导入导出

    导出镜像 docker save -o centos7.tar centos # 导入本地镜像 docker load --input centos7.tar docker ps -a docker ...

  10. Discuz! X 插件开发手册

      文件命名规范 Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范: 可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名. 被普通程序文件引用的程序文件, ...