Python 读写文件
读写常用模式
r
:只读+
:读写w
:新建(会覆盖原有文件),写入a
:追加b
:二进制文件t
:文本x
:进行独占创建,如果文件已存在则失败
读写文本数据
使用带有 rt
模式的 open() 函数读取文本文件。如下所示:
# 将整个文件作为单个字符串读取
with open('somefile.txt', 'rt') as f:
data = f.read()
# 一行一行的读取
with open('somefile.txt', 'rt') as f:
for line in f:
# process line
...
类似的,为了写入一个文本文件,使用带有 wt
模式的 open() 函数, 如果之前文件内容存在则清除并覆盖掉。如下所示:
# 写入文本数据
with open('somefile.txt', 'wt') as f:
f.write(text1)
f.write(text2)
...
# 重定向 print
with open('somefile.txt', 'wt') as f:
print(line1, file=f)
print(line2, file=f)
...
如果是在已存在文件中追加内容,使用模式为 at
的 open() 函数。
读写字节数据
使用模式为 rb
或 wb
或者 ab 追加
的 open() 函数来读取或写入二进制数据。比如:
# Read the entire file as a single byte string
with open('somefile.bin', 'rb') as f:
data = f.read()
# Write binary data to a file
with open('somefile.bin', 'wb') as f:
f.write(b'Hello World')
text = 'Hello World'
f.write(text.encode('utf-8'))
在读取二进制数据时,需要指明的是所有返回的数据都是字节字符串格式的,而不是文本字符串。 类似的,在写入的时候,必须保证参数是以字节形式对外暴露数据的对象(比如字节字符串,字节数组对象等)。
二进制I/O还有一个鲜为人知的特性就是数组和 C 结构体类型能直接被写入,而不需要中间转换为自己对象。比如:
import array
nums = array.array('i', [1, 2, 3, 4])
with open('data.bin','wb') as f:
f.write(nums)
参考
https://python3-cookbook-personal.readthedocs.io/zh_CN/latest/c05/p01_read_write_text_data.html
https://docs.python.org/3/library/functions.html#open
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:Python 读写文件
文章字数:521
本文作者:Bin
发布时间:2018-08-09, 20:57:22
最后更新:2019-08-06, 00:07:35
原始链接:http://coolview.github.io/2018/08/09/Python/Python%20%E8%AF%BB%E5%86%99%E6%96%87%E4%BB%B6/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。