Python 文件处理

作者: 江洋林澜 | 来源:发表于2018-04-07 20:48 被阅读0次

文件处理

常用打开文件方式

1.读取文件内容, 模式为 'r' 表示读, 这也是打开的默认方式。

2.如果要创建或者替换文件, 模式为 'w', 表示写。

3.为现有文件添加内容, 模式为 'a', 表示追加。

4.如果文件是二进制的, 读写都需要添加 'b'。

模式可以组合, 比如 rb 就表示读取二进制文件, 更多的模式可以使用 dir 查看 open 函数的文档说明。

不同模式打开文件的列表:

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在, 创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在, 创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在, 创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在, 文件指针将会放在文件的结尾。也就是说, 新的内容将会被写入到已有内容之后。如果该文件不存在, 创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在, 文件指针将会放在文件的结尾。也就是说, 新的内容将会被写入到已有内容之后。如果该文件不存在, 创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在, 文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在, 创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在, 文件指针将会放在文件的结尾。如果该文件不存在, 创建新文件用于读写。

打开一个文件需要使用 open() 函数建立一个文件对象:

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])

file: 要访问的文件名称。

mode: 打开文件的模式, 默认访问文件模式是只读(r)

buffering: 设置 buffer(取值为 0, 1, >1)。如果 buffering 的值被设为 0, 就不会有寄存。如果 buffering 的值取 1, 访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数, 表明了这就是的寄存区的缓冲大小。如果取负值, 寄存区的缓冲大小则为系统默认。

encoding: 返回数据的编码格式。

errors: 报错级别, 一般为 strict, ignore。当取strict的时候, 字符编码出现问题的时候, 会报错, 当取ignore的时候, 编码出现问题, 程序会忽略而过, 继续执行下面的程序。

newline: 用于区分换行符, 这个参数只对文本模式有效, 可以取的值有 None, '\n', '\r', '', '\r\n'

closefd: 取值与传入的文件参数有关, 默认情况下为 True, 传入的 file 参数为文件的文件名, 取值为 False 的时候,file 只能是文件描述符, 什么是文件描述符, 就是一个非负整数, 在 Unix 内核的系统中, 打开一个文件, 便会返回一个文件描述符。

例如:

f = open('a.txt', 'r') # 以只读方式打开 a.txt

close() 方法

文件对象的 close() 方法刷新缓冲区里任何还没写入的信息, 并关闭该文件,这之后便不能再进行写入。

当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

使用语法如下:

f = open('a.txt', 'r')
f.close()

读文件

读文件的常用方法:

read(): 一次性读取文件的所有内容。

read(size): 读取 size 个字节的内容。

readline(): 逐行读取文本,结果是一个 list(列表)

readlines(): 一次性地按行读取全部内容, 存入一个 list(列表)

写文件

写文件的常用方法:

write(str): 将 str 写入文件。write()并不会在 str 后加上一个换行符。

writelines(seq): 把 seq 的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

Python File(文件) 其他方法:

file 对象使用 open() 函数来创建, 下面是一些常用的函数

函数 作用
file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
file.next() 返回文件下一行
file.seek(offset[, whence]) 设置文件当前位置
file.tell() 返回文件当前位置
file.truncate([size]) 截取文件, 截取的字节通过size指定, 默认为当前文件位置。

with-文件上下文管理器

文件操作可能会出现异常(例如要操作的文件不存在等), 抛出异常会影响 close() 方法正确关闭文件。如果想保证 close() 方法的执行, 可以使用如下方法处理异常:

try:
    f = open('a.txt', 'r')
    print(f.read())
finally:
    f.close()

Python 的文件对象支持 with 语法, 上面代码的效果可以用如下代码实现:

with open('a.txt', 'r') as f:
    print(f.read())

with 上下文管理器在执行完代码块之后, 会自动调用文件对象的 close() 方法, 使用 with ... as ... 语法, 可以更简洁。

json/pickle 存储 Python 对象

如果我们需要存储的不是字符串, 而是 Python 内置的数据结构或者是一些自定义的类对象, 这时候就需要通过某种方式将需要存储的 Python 对象转换为字符串或者二进制内容存放, 这个过程叫做 序列化, 从字符串转换成对象叫做 反序列化

下面是 json 和 pickle 模块完成序列化的简单操作:

In: import json
In: import pickle

In: my_dict = {'a': [1, 2, 3], 'b': 123}
In: json_data = json.dumps(my_dict)
In: pickle_data = pickle.dumps(my_dict)

In: json_data
Out: '{"a": [1, 2, 3], "b": 123}'

In: pickle_data
Out: b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01]q\x02(K\x01K\x02K\x03eX\x01\x00\x00\x00bq\x03K{u.'

将序列化的结果写入文件的操作如下:

with open('data.json', 'w') as f:
    f.write(json_data)

with open('data.json') as f:
    data = json.loads(f.read()) # loads() 方法反序列化
    print(data)

相关文章

  • Python 文件处理

    Python 读文件处理 1. readline() with 处理开闭文件&文件异常处理 readline()内...

  • 从Excel到Python (视频)

    Python Pandas处理Excel文件

  • Python 文件处理

    文件的理解 文件是数据的抽象和集合 文本文件 VS. 二进制文件 f.txt 文件保存: "人生苦短, 我用Pyt...

  • Python 文件处理

    文件处理 常用打开文件方式 1.读取文件内容, 模式为 'r' 表示读, 这也是打开的默认方式。 2.如果要创建或...

  • python 文件处理

  • python——文件处理

    1.文件处理 如果报错 说明编码不对。 按正常逻辑来讲,文件是以什么方式存的,就应该用什么方式去读取,比如以gb2...

  • Python 文件处理

    python 文件打开方式 文件打开方式: open(name[,mode[,buf]])name: 文件路径mo...

  • Python 文件处理

    创建文件 f = file('myfile.txt','w') f.write('hello,baby!')f....

  • python 文件处理

    文件处理有三个步骤:1、定义文件路径: 2、打开并保存文件内容。 r:以只读方式打开文件。文件的指针将会放在文件的...

  • Python文件处理

    文件读取 整个读取 两个注意点: 使用关键字with可以自动关闭文件流,如果使用file_object = ope...

网友评论

    本文标题:Python 文件处理

    本文链接:https://www.haomeiwen.com/subject/iecuhftx.html