一、文件的打开和关闭
文件操作是 Python 编程中常见且重要的一部分。open()
函数是文件操作的基础,它可以接收文件路径、打开模式和编码方式等参数,用于读取或写入文件内容。例如:
<code># 读取文件内容并关闭文件句柄 with open(r'd:\测试文件.txt', mode='r', encoding='utf-8') as f1: content = f1.read() print(content)</code>
在使用 open()
函数时,要注意指定文件路径的格式,可以是绝对路径或相对路径,并根据实际需要选择合适的路径书写方式。
二、常用文件访问模式
Python 提供了多种文件访问模式,常见的有:
r
:只读模式,文件必须存在。w
:只写模式,文件不存在则创建,存在则清空内容后写入。a
:追加写模式,文件不存在则创建,存在则在末尾追加内容。rb
、wb
、ab
:以二进制模式读写文件。
根据需求选择合适的模式,灵活应用于文件操作中。
三、文件读取和写入
文件读取可使用 read()
、readline()
、readlines()
方法,或者通过 for
循环逐行读取文件内容。写入文件则使用 write()
方法。例如:
<code># 使用 readlines() 方法读取文件内容 with open('文件操作的读', encoding='utf-8') as f1: lines = f1.readlines() for line in lines: print(line.strip())</code>
四、实现文件拷贝功能
通过文件操作,可以轻松实现文件的拷贝功能。利用源文件和目标文件的文件句柄,以二进制形式逐块读取并写入数据,即可完成文件的复制操作。
<code>import os def file_copy(source_file, target_file): if os.path.isfile(source_file): with open(source_file, 'rb') as src, open(target_file, 'wb') as tgt: while True: content = src.read(1024) if not content: break tgt.write(content) else: print('Source file does not exist.') # 调用示例 file_copy('source.txt', 'target.txt')</code>
五、CSV 文件的读写
Python 提供了 csv
模块,方便对 CSV 格式的文件进行读写操作。使用 csv.writer()
和 csv.reader()
可以实现数据的写入和读取。
<code>import csv # 写入CSV文件 data = [['name', 'age', 'score'], ['张三', '18', '98'], ['李四', '20', '99']] with open('test.csv', 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) writer.writerows(data) # 读取CSV文件 with open('test.csv', 'r', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) for row in reader: print(row)</code>
六、将数据写入内存
除了将数据写入文件外,还可以使用内存缓冲区,即 StringIO
和 BytesIO
类。这两个类可以将数据暂时写入内存中,方便临时存储和处理。
<code>from io import StringIO # 写入StringIO f = StringIO() f.write('hello\n') f.write('world') print(f.getvalue()) f.close()</code>
七、sys 模块的使用
sys.stdin
、sys.stdout
和 sys.stderr
是 Python 的标准输入、标准输出和错误输出流。通过重定向这些流,可以实现对用户输入和程序输出的控制。
<code>import sys # 重定向标准输出到文件 with open('output.txt', 'w') as f: sys.stdout = f print('Hello, world!') sys.stdout = sys.__stdout__ # 恢复标准输出</code>
八、序列化和反序列化
Python 提供了 json
和 pickle
两个模块,用于实现数据的序列化和反序列化操作。json
模块适用于跨平台数据传输和存储,而 pickle
模块可以将 Python 对象转换为二进制格式,实现更高效的数据存储和加载。
<code>import json # 序列化为 JSON data = {'name': '张三', 'age': 18} json_str = json.dumps(data) print(json_str) # 反序列化 JSON data = json.loads(json_str) print(data)</code>
这些 Python 文件操作技巧可以帮助你更高效地处理文件,提高代码的可读性和可维护性,同时实现更多功能需求。
暂无评论内容