Python提供了内置支持来实现文件的打开(open)、处理(process)和关闭(close)。可以允许你打开一个文件以某种方式处理其其数据(读、写、追加数据),然后在完成时关闭文件(这回保存所做的修改)。
写文件
步骤:
- 调用open函数会返回一个文件流,两个参数,第二个参数指操作模式(此处为追加模式)。
- 使用print方法写数据到文件,它有两个参数,第一个是数据,第二个指定要写的文件流。
- 调用close关闭文件。
todos = open("F:\\haha\\bbb\\aaa.txt","a")
print("put out the trash",file=todos)
print("feed the cat",file=todos)
print("prepare tax return",file=todos)
#这里向文件里写了三行数据
todos.close()
读文件
步骤:
- 调用open函数返回一个文件流。由于读是open的默认操作模式,因此可以省略第二个参数。
- 使用for循环读取文件各行,for循环每次循环迭代一行数据。
- 关闭流。
tasks = open("F:\\haha\\bbb\\aaa.txt")
for chore in tasks:
print(chore)
#注意这里的输出,会发现它会有额外的换行
#那是因为文件本身有个换行符,print默认有个换行符
#所以总共有两个换行符,可以修改为
# print(chore,end='')
tasks.close()
通过上述练习,可知道,open的第一个参数是要处理的文件名,第二个参数是可选的。主要操作模式可分为“读”、“写”、“追加”。如果指定的文件不存在,其他模式(除了“r”模式)都会创建一个新的空文件。
- ‘r’ 打开一个文件来读数据。这是默认模式,因此可以省略
- ‘w’ 打开一个文件来写数据。如果文件中已经包含数据,在继续写之前会先清空文件中的数据。
- ‘a’ 打开一个文件来追加数据。保留文件的内容,向文件末尾增加新数据。
- ‘x’ 打开一个新文件来写数据。如果文件已经存在则失败
默认地,文件以文本模式打开,如果你要处理非文本数据(如图片、MP3文件),可以为模式增加‘b’来指定二进制模式 (如‘wb’表示写二进制数据)。如果第二个参数还包含‘+’,则会打开文件来完成读写(‘x+b’表示“读写一个新的二进制文件”)。
下面介绍更加简便的文件打开处理关闭方式
with....as.....
with open("F:\\haha\\bbb\\aaa.txt") as todos:
for chore in todos:
print(chore)
这里可以发现没有close的调用,with语句可以自动帮你调用。with语句会帮你做善后处理工作。
总结:
读文件:使用for循环行数据
写文件:使用print函数实现
上面的方法用来处理纯文本信息还是可以的。因为读写过程中,解码字符和编码字符都是采用统一的编码(比如用gbk编码,用gbk解码),而且在使用print时默认还有换行符,还得进行end=''处理。但是,如果你要对一个二进制的文件进行操作时,就不能使用print函数了,因为二进制文件不能包含字符。所以使用read、write函数完成二级制的读写操作。