在 Python 中, IO 模块提供了三种 IO 操作的方法;原始二进制文件、缓冲二进制文件和文本文件。创建文件对象的规范方法是使用open()
函数。
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的鹿邑网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
任何文件操作都可以通过以下三个步骤来执行:
open()
函数检索的文件对象执行读、写、追加操作。文件对象包括以下从文件中读取数据的方法。
以下C:\myfile.txt
文件将用于所有读写文件的例子。
C:\myfile.txt
This is the first line.
This is the second line.
This is the third line.
以下示例使用read(chars)
方法执行读取操作。
Example: Reading a File
>>> f = open('C:\myfile.txt') # opening a file
>>> lines = f.read() # reading a file
>>> lines
'This is the first line. \nThis is the second line.\nThis is the third line.'
>>> f.close() # closing file object
上图,f = open('C:\myfile.txt')
从当前目录打开默认读取模式下的myfile.txt
,返回一个文件对象。 f.read()
函数读取所有内容,直到 EOF 为字符串。如果在read(chars)
方法中指定字符大小参数,那么它将只读取那么多字符。 f.close()
将冲水并关闭溪流。
下面的示例演示如何从文件中读取一行。
Example: Reading Lines
>>> f = open('C:\myfile.txt') # opening a file
>>> line1 = f.readline() # reading a line
>>> line1
'This is the first line. \n'
>>> line2 = f.readline() # reading a line
>>> line2
'This is the second line.\n'
>>> line3 = f.readline() # reading a line
>>> line3
'This is the third line.'
>>> line4 = f.readline() # reading a line
>>> line4
''
>>> f.close() # closing file object
如您所见,我们必须在'r'
模式下打开文件。readline()
方法将返回第一行,然后指向文件中的第二行。
以下使用readlines()
功能读取所有行。
Example: Reading a File
>>> f = open('C:\myfile.txt') # opening a file
>>> lines = f.readlines() # reading all lines
>>> lines
'This is the first line. \nThis is the second line.\nThis is the third line.'
>>> f.close() # closing file object
文件对象有一个内置的迭代器。以下程序逐行读取给定的文件,直到StopIteration
上升,即达到 EOF。
Example: File Iterator
f=open('C:\myfile.txt')
while True:
try:
line=next(f)
print(line)
except StopIteration:
break
f.close()
使用 for
循环可以轻松读取文件。
Example: Read File using the For Loop
f=open('C:\myfile.txt')
for line in f:
print(line)
f.close()
Output
This is the first line.
This is the second line.
This is the third line.
使用open()
功能中的“rb”模式读取二进制文件,如下图所示。
Example: Reading a File
>>> f = open('C:\myimg.png', 'rb') # opening a binary file
>>> content = f.read() # reading all lines
>>> content
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x08\x00\x00\x00\x08\x08\x06
\x00\x00\x00\xc4\x0f\xbe\x8b\x00\x00\x00\x19tEXtSoftware\x00Adobe ImageReadyq
\xc9e\x00\x00\x00\x8dIDATx\xdab\xfc\xff\xff?\x03\x0c0/zP\n\xa4b\x818\xeco\x9c
\xc2\r\x90\x18\x13\x03*8\t\xc4b\xbc\x01\xa8X\x07$\xc0\xc8\xb4\xf0>\\\x11P\xd7?
\xa0\x84\r\x90\xb9\t\x88?\x00q H\xc1C\x16\xc9\x94_\xcc\x025\xfd2\x88\xb1\x04
\x88\x85\x90\x14\xfc\x05\xe2( \x16\x00\xe2\xc3\x8c\xc8\x8e\x84:\xb4\x04H5\x03
\xf1\\ .bD\xf3E\x01\x90\xea\x07\xe2\xd9\xaeB`\x82'
>>> f.close() # closing file object
文件对象提供了以下写入文件的方法。
如果新文件不存在或覆盖到现有文件,则创建新文件。
Example: Create or Overwrite to Existing File
>>> f = open('C:\myfile.txt','w')
>>> f.write("Hello") # writing to file
5
>>> f.close()
# reading file
>>> f = open('C:\myfile.txt','r')
>>> f.read()
'Hello'
>>> f.close()
在上面的例子中,f=open("myfile.txt","w")
语句以写模式打开myfile.txt
,open()
方法返回文件对象并将其分配给变量f
。 'w'
指定文件应该是可写的。 接下来,f.write("Hello")
覆盖myfile.txt
文件的现有内容。它返回写入文件的字符数,在上面的例子中是 5。 最后,f.close()
关闭文件对象。
下面通过在open()
方法中传递'a'
或'a+'
模式,在现有文件的末尾追加内容。
Example: Append to Existing File
>>> f = open('C:\myfile.txt','a')
>>> f.write(" World!")
7
>>> f.close()
# reading file
>>> f = open('C:\myfile.txt','r')
>>> f.read()
'Hello World!'
>>> f.close()
Python 提供了writelines()
方法,将列表对象的内容保存在文件中。 由于换行符不会自动写入文件,因此必须作为字符串的一部分提供。
Example: Write Lines to File
>>> lines=["Hello world.\n", "Welcome to TutorialsTeacher.\n"]
>>> f=open("D:\myfile.txt", "w")
>>> f.writelines(lines)
>>> f.close()
以“w”模式或“a”模式打开文件只能写入,不能读取。同样,“r”模式只允许读,不允许写。为了同时执行读取/追加操作,请使用“a+”模式。
open()
功能默认以文本格式打开文件。要以二进制格式打开文件,请将'b'
添加到模式参数中。 因此"rb"
模式以二进制格式打开文件进行读取,而"wb"
模式以二进制格式打开文件进行写入。与文本文件不同,二进制文件不可读。使用任何文本编辑器打开时,数据都无法识别。
下面的代码将数字列表存储在二进制文件中。该列表在写入前首先转换为字节数组。内置函数 bytearray() 返回对象的字节表示。
Example: Write to a Binary File
f=open("binfile.bin","wb")
num=[5, 10, 15, 20, 25]
arr=bytearray(num)
f.write(arr)
f.close()
分享标题:Python文件输入/输出——读写文件
标题链接:http://www.shufengxianlan.com/qtweb/news47/540097.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联