Python文件操作汇总(新手必看)
文件的绝对路径由目录和文件名两部分构成,示例代码如下:
读入 utf-8 编码格式的文本文件,代码如下:
为了实现写入文本文件,可以使用 'w' 模式的 open() 函数以写模式打开新文件,代码如下:
一旦打开新文件,可以使用写入操作 <file>.write() 将数据放入文件中。写入操作接收单个参数,该参数必须是字符串,并将该字符串写入文件。如果想要在文件中开始新行,则必须明确提供换行符,示例代码如下:
关闭文件可确保磁盘上的文件和文件变量之间的连接已完成。关闭文件还可确保其他程序能够访问它们并保证用户的数据安全。所以,一定要关闭文件。使用 <file>.close() 函数关闭所有文件,代码如下:
使用 open() 函数创建文件对象可以使用的模式总结如下:
对于 json 格式的文件,可以导入 json 模块读取文件,代码如下:
演示 json 文件的内容如下:
演示读取 json 格式的文件如下:
可以使用 os.rename() 方法重命名文件。首先使用 touch 命令创建一个空文件,代码如下:
只打印出一个目录下的文件,代码如下:
如果想要遍历一个目录树并处理树中的文件,则可以使用 os.walk() 方法。os.walk() 默认以自上而下的方式遍历目录,代码如下:
import os.path path = '/home/data/file.wav' print(os.path.abspath(path)) # 返回绝对路径(包含文件名的全路径) print(os.path.basename(path)) # 返回路径中包含的文件名 print(os.path.dirname(path)) # 返回路径中包含的目录输出如下:
/home/data/file.wav
file.wav
/home/data
Python读写文件
逐行读入文本文件,代码如下:lexicon = open("lexicon.txt") for line in lexicon: line = line.strip() print(line, "\n") lexicon.close()
读入 utf-8 编码格式的文本文件,代码如下:
import codecs import sys transcript = codecs.open(sys.argv[1], "r", "utf8") # 第一个参数传入文件名 for line in transcript: print(line) transcript.close()
为了实现写入文本文件,可以使用 'w' 模式的 open() 函数以写模式打开新文件,代码如下:
new_path = "a.speaker_info" fout = open(new_path, 'w')需要注意,如果 new_path.txt 在打开文件之前已经存在,则它的旧内容将被破坏,所以在使用 'w' 模式时要小心。
一旦打开新文件,可以使用写入操作 <file>.write() 将数据放入文件中。写入操作接收单个参数,该参数必须是字符串,并将该字符串写入文件。如果想要在文件中开始新行,则必须明确提供换行符,示例代码如下:
fout.write("\nID:\t1212")
关闭文件可确保磁盘上的文件和文件变量之间的连接已完成。关闭文件还可确保其他程序能够访问它们并保证用户的数据安全。所以,一定要关闭文件。使用 <file>.close() 函数关闭所有文件,代码如下:
fout.close()
使用 open() 函数创建文件对象可以使用的模式总结如下:
- 'r' 用于读取现有文件(默认值;可以省略);
- 'w' 用于创建用于写入的新文件;
- 'a' 用于将新内容附加到现有文件。
对于 json 格式的文件,可以导入 json 模块读取文件,代码如下:
import json data = json.load(open('my_file.json', 'r'))
演示 json 文件的内容如下:
{"hello":"lietu"}
演示读取 json 格式的文件如下:
>>> import json
>>> print(json.load(open('my_file.json','r')))
{u'hello': u'lietu'}
Python重命名文件
Linux 操作系统中的文件名区分英文大小写,而 Window 操作系统中的文件名不区分英文大小写。可以使用 os.rename() 方法重命名文件。首先使用 touch 命令创建一个空文件,代码如下:
# touch ./test1然后把 test1 重命名为 test2:
import os src = 'test1' dst = 'test2' os.rename(src, dst)
Python遍历文件
使用 os.scandir() 遍历一个目录。os.scandir() 方法返回一个迭代器,示例代码如下:import os with os.scandir('/home/') as entries: for entry in entries: print(entry.name)这里通过 with 语句使用上下文管理器关闭迭代器,并在迭代器耗尽后自动释放已获取的资源。
只打印出一个目录下的文件,代码如下:
dir_entries = os.scandir('/home/') for entry in dir_entries: if entry.is_file(): # 判断项目是否文件 print(f'{entry.name}')
如果想要遍历一个目录树并处理树中的文件,则可以使用 os.walk() 方法。os.walk() 默认以自上而下的方式遍历目录,代码如下:
import os for root, dirs, files in os.walk("/home/"): for name in files: print(os.path.join(root, name)) # 打印文件 for name in dirs: print(os.path.join(root, name)) # 打印目录