文件处理
所有方法
方法 | 描述 |
---|---|
close() | 关闭文件。 |
detach() | 从缓冲区返回分离的原始流(raw stream)。 |
fileno() | 从操作系统的角度返回表示流的数字。 |
flush() | 刷新内部缓冲区。 |
isatty() | 返回文件流是否是交互式的。 |
read() | 返回文件内容。 |
readable() | 返回是否能够读取文件流。 |
readline() | 返回文件中的一行。 |
readlines() | 返回文件中的行列表。 |
seek() | 更改文件位置。 |
seekable() | 返回文件是否允许我们更改文件位置。 |
tell() | 返回当前的文件位置。 |
truncate() | 把文件调整为指定的大小。 |
writeable() | 返回是否能够写入文件。 |
write() | 把指定的字符串写入文件。 |
writelines() | 把字符串列表写入文件。 |
打开文件
在 Python 中使用文件的关键函数是 open() 函数。
open() 函数有两个参数:文件名和模式。
有四种打开文件的不同方法(模式):
- “r” - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
- “a” - 追加 - 打开供追加的文件,如果不存在则创建该文件。
- “w” - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。
- “x” - 创建 - 创建指定的文件,如果文件存在则返回错误。
此外,您可以指定文件是应该作为二进制还是文本模式进行处理。
- “t” - 文本 - 默认值。文本模式。
- “b” - 二进制 - 二进制模式(例如图像)。
示例
此外,您可以指定文件是应该作为二进制还是文本模式进行处理:
1 | f = open("demofile.txt") |
以上代码等同于:
1 | f = open("demofile.txt", "rt") |
因为 “r” (读取)和 “t” (文本)是默认值,所以不需要指定它们。
文件删除
1 | def generate_tsv(img_folder): |
遍历文件夹下文件
1 | import os |
文件写入
1 | with open(tsv_path, 'a') as tsv_file: |
获取目录
工作目录
os.getcwd()
获取的是当前工作目录(Current Working Directory,CWD)。
假设你有一个脚本 my_script.py
放在 /home/user/scripts
目录下.
你可以在不同的目录中运行这个脚本,比如从 /home/user
目录或者 /home/user/projects
目录运行:
1 | # 从 /home/user 目录运行脚本 |
在这两种情况下,my_script.py
中的 os.getcwd()
将返回不同的路径:
- 在第一种情况下,
os.getcwd()
将返回/home/user
。 - 在第二种情况下,
os.getcwd()
将返回/home/user/projects
。
当前脚本所在目录
1 | import os |
上级目录
要获取当前脚本所在目录的上级目录,可以在获取当前脚本目录后,再使用路径操作函数来获取上级目录。以下是几种常见的方法:
方法 1: 使用 os
模块
1 | import os |
方法 2: 使用 pathlib
模块
1 | from pathlib import Path |
注意script_path.parent
是pathlib.Path
对象,而不是普通的字符串。
如果你想将 Path
对象与其他字符串拼接,需要先将 Path
对象转换为字符串。
你可以使用 str()
函数来进行转换。
1 | script_path = Path(__file__).resolve() |
路径拼接
路径拼接不要自己用斜杠拼接,在不同的系统上会有兼容性问题。
os.path
1 | script_path = Path(__file__).resolve() |
pathlib
pathlib
提供了更简洁的方式来拼接多个路径段,使用 /
运算符:
1 | from pathlib import Path |
这里的full_path
是对象
1 | full_path_str = str(full_path) |