python中文档IO的读写
首先明确一点,现代计算机的操作系统都不允许程序直接操作磁盘的,所以读取文件和写入文件都是有操作系统提供的提供的接口完成的,每一种编程语言都会把操作系统提供的低级C接口封装起来方便使用,Python也不例外。python是怎么样读取文件的。
文件打开
f= open ('C:/Users/Administrator/Desktop/test.txt','r')
1、文件的读取
使用open语句进行文件的打开操作,括号里面指明文件的位置和阅读的模式,'r'只读,还是'w'写入.中间用逗号隔开,位置与模式分别使用引号。
文件打开成功,可以使用read()方法进行一次性全部读取到计算机内存中,并用一个字符串对象表示,
>>> f.read() ''
因为文件是空的,返回 ''
使用 read() 方法危险之处在于如果文件过大,计算机内存就会爆满,可以使用更加安全的方法。
read(size)表示每次最多读取size字节的内容
readline()表示每次读取一行的内容
readlines()表示一次读取所有内容并按行返回list
2、文件的写入
首先打开文件,指定写入模式:
f= open ('C:/Users/Administrator/Desktop/test.txt','w')
写入内容:
f.write('hello,world')
这是文本已经写人文件。
3、关闭文件
打开的文件对象会占用系统的资源,所以要进行关闭操作,另外操作系统同一时间能打开的文件数量也是有限的,及时关闭文件是良好的代码书写习惯。
f.close()
至此一个文件的读取、写入、关闭完成。
注意的是使用IO读写很可靠会发生错误,这是文件依旧打开但是使用close()会失去调用,为了保证无论是否出错我们都能正确的关闭文件,使用python中的try finally来实现。
try:
f = open('C:/Users/Administrator/Desktop/test.txt', 'r')
print(f.read())
finally:
if f:
f.close()
使用with
语句来自动帮我们调用close()
方法:
with open('C:/Users/Administrator/Desktop/test.txt
', 'r') as f:
print(f.read())
和try ... finally
是一样的,但是代码更佳简洁,并且不必调用f.close()
方法。
4、其他文件读取:
读取二进制文件:例如视频、图片,用'rb'
模式打开文件即可:
f = open('/Users/michael/test.jpg', 'rb')
读取非UTF-8编码的文本文件,需要给open()
函数传入encoding
参数:
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
遇到有些编码不规范的文件,open()
函数还接收一个errors
参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
常见的文件打开模式:
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
最后注意:
在Windows资源管理器中的文件地址位置使用的"\",但是在python中的读取时路径要使用"/"否则会出现错误。