Python 读写文件

  1. 读写常用模式
  2. 读写文本数据
  3. 读写字节数据
  4. 参考

读写常用模式

  • 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() 函数。

读写字节数据

使用模式为 rbwb 或者 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" 转载请保留原文链接及作者。

目录