文件

文件,就是计算机中由操作系统管理的具有名字的存储区域。

内置open函数会创建一个python文件对象,可以作为计算机上的一个文件链接。调用open后,你可以通过返回文件对象的方法来读写相关外部文件。

文件对象只是常见文件处理任务输出模块。多少文件方法都与执行外部文件相关的文件对象的输入和输出有关,但其他文件方法可查找文件中的新位置,刷新输出缓存等

常见文件运算
output = open(r'C:\spam','w')创建输出文件
input = open('data','r')创建输入文件
input = open('data')与上行相同,'r'为默认值
aString = input.read()把整个文件读进一个字符串
aString = inpurt.read(N)读取之后的N个字节到一个字符串
aString = input.readline()读取下一行到一个字符串
aString = input.readlines()读取整个文件到字符串列表
output.write(aString)希尔字节字符串到文件
output.writelines(aList)把列表内所有字符串按行写入
output.close()关闭
output.flush()把输出缓冲区刷到硬盘,但不关闭文件
anyfile.seek(N)修改文件位置到偏移量N处以便下一个操作
for line in open('data'): use line文件迭代器一行行读取
open('f.txt',encoding='latin-1')Unicode文本文件
open('f.bin','rb')二进制byte文件

'w' 写, 'r' 读, 'a'追加

模式字符串后加'b'可以进行二进制数据处理,如'rb' 

加上'+'意味着同时为输入输出打开文件(即可同时读写)

open的前两个参数必须带上字符串,第三个参数是可选参数,他能够用来控制输出缓存,传入"0"意味着输出无缓存(写入方法调用时立即传给外部文件)

外部文件名参量可能包含平台特定的以及绝对或相对目录路径前缀。没有目录时,文件假定存在当前的工作目录中。

 

使用文件

文件迭代器是最后的读取行工具:

现在从文本中读取文字行的最佳方式是根本不需要读取,文件也有个迭代器会自动的在for循环,列表解析汇总其他迭代语句中对文件进行逐行读取

for line in open('myfile'):
    print(line, end='')

内容是字符串,不是对象:

文件对其的数据回到脚本时是一个字符串,写入文件时,python不会自动地把对象转换为字符串,需要传递一个已经格式化的字符串。Python也包括一些高级标准库工具,用来处理一般对象的存储(如pickle)以及处理文件中打包的二进制数据(如struct)

文件的空行是含义换行符的字符串('\n'),而不是空字符串

close是通常选项:

close会终止对外部文件的连接。关闭释放了操作系统资源也清空了缓冲区。

推荐用with/as语句,它会自动关闭文件。

文件是缓冲的并且是可查找的:

默认情况下,输出文件总是缓冲的,这意味着写入的文本可能不会立即自动从内测转换到硬盘--关闭一个文件,或者运行flush方法,迫使缓存的数据进入硬盘

 

我们使用字符串rstrip方法去掉多余的行终止符;line[:-1]分片也可以,但是只要确定所有行都含有'\n'的时候才行(文件中最后一行有时候会没有)

F = open('datafile.txt')
line = F.readline()
line.rstrip()

要转换文件所存储的列表和字典,我们可以运行eval这一内置函数,eval能够把字符串当中可执行程序代码。

举个栗子:

>>> eval('[1,2,3]')
[1, 2, 3]

 

如下几块内容暂不填充:

用pickle存储Python原生对象

文件中打包二进制数据的存储与解析(struct)

 

Learning Python, Fourth Edition, by Mark Lutz.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值