文件的作用:进行持久化存储数据
文件操作介绍
程序操作文件过程
- 打开->设置打开模式(读写)
- 操作文件(读取)
- 关闭->close()
文件的访问模式
文件的访问模式
读取:
文本形式
程序文件
.txt 文件
.rtf 文件
二进制形式
音频文件
视频文件
图片文件
写入:
文本形式
程序文件
.txt 文件
.rtf 文件
二进制形式
音频文件
视频文件
图片文件
以文本方式打开方式的模式
r -> rt -> read text 以文本方式打开文件读,文件存在,打开成功,文件不存在,打开失败
w -> wt -> write text 以文本方式打开文件写,不管文件是否存在,都会新创建一个新文件
a -> at -> append text 以文件方式打开文件追加,文件不存在,创建文件,文件存在,那么打开文件然后将光标移动到文件的最后
以二进制形式打开文件的模式
rb 以二进制形式打开文件读取
wb 以二进制形式打开文件写入
ab 以二进制形式打开文件追加
既想要读取,又想要写入(了解)
r+ 这三种模式都具有读取写入功能
w+
a+
文件操作
打开文件
# 'r' 是只读模式,默认模式
file = open('example.txt', 'r')
# 'w' 是写入模式,会覆盖文件
file = open('example.txt', 'w')
# 'a' 是追加模式,内容将被添加到文件末尾
file = open('example.txt', 'a')
# 'b' 是二进制模式
file = open('example.jpg', 'rb')
读取文件的方式
# 一次性读取整个文件,不适合大文件读取
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 如果文件比较大,不建议上面这样读取,建议读取指定字节数的文件内容读取一部分,先读4K:content = file.read(4096)
# 读取多行文件的方式read(size)
with open('example.txt', 'r') as file:
while True:
# 读取
content = file.read(4096)
# 如果在文件读取时,读取的结果为 空串,说明文件读取完毕
# 根据这个条件 可以设置读取文件的结束条件
if content == '':
break
print(content,end='')
# 读取文件的每一行并存入一个列表,每一行都是一个列表元素
with open('example.txt', 'r') as file:
lines = file.readlines()
print(lines)
# 逐行读取文件
with open('example.txt', 'r') as file:
for line in file:
print(line.strip())
写入文件
# 写入文件(会覆盖文件内容)
with open('example.txt', 'w') as file:
file.write('Hello, World!\n')
# 追加到文件末尾
with open('example.txt', 'a') as file:
file.write('This is an additional line.\n')
关闭文件
尽管使用 with open()
可以自动处理文件的关闭,但如果手动打开文件,则需要手动关闭:
file = open('example.txt', 'r')
content = file.read()
file.close()
常用文件和文件夹操作
Python OS 模块
Python 的 os
模块是标准库的一部分,为操作系统相关的功能提供了便捷的接口。它允许你执行与操作系统交互的各种操作,比如文件和目录的管理、环境变量的访问等等。以下是 os
模块的一些常见功能和使用示例:
- 路径管理:
os.path.join()
: 用于拼接路径。os.path.exists()
: 检查路径是否存在。os.path.abspath()
: 得到绝对路径。os.path.dirname()
: 获取路径的目录部分。os.path.basename()
: 获取路径的最后一部分。
import os path = os.path.join("folder", "file.txt") print(path) # folder/file.txt on Unix系 or folder\file.txt on Windows
- 文件和目录操作:
os.listdir()
: 列出指定目录中的所有文件和目录。os.mkdir()
: 创建新目录。os.makedirs()
: 递归创建目录。os.remove()
: 删除文件。os.rmdir()
: 删除目录。os.rename()
:重命名文件
os.mkdir('new_folder') # 创建一个新目录 files = os.listdir('.') # 列出当前目录的内容
- 环境变量:
os.getenv()
: 获取环境变量的值。os.environ
: 一个表示环境变量的字典。
path_var = os.getenv('PATH') print(path_var)
- 执行系统命令:
os.system()
: 执行系统命令。os.popen()
: 打开一个管道,用于执行命令并获取输出。
os.system('echo "Hello, World!"')
- 获取文件属性:
os.stat()
: 获取文件的信息,比如大小和修改时间。os.path.getsize()
: 获取文件大小。os.path.getmtime()
: 获取文件的最后修改时间。
file_info = os.stat('file.txt') print(file_info.st_size) # 打印文件大小
- 改变和获取当前工作目录:
os.getcwd()
: 获取当前工作目录。os.chdir()
: 改变当前工作目录。
current_dir = os.getcwd() os.chdir('/path/to/directory')
- 创建临时文件和目录:
使用tempfile
模块通常更为合适,但os
也提供一些基础功能去创建临时文件。 - 权限和时间戳管理:
os.chmod()
: 改变文件权限。os.utime()
: 更新访问和修改时间。
文件练习
复制一个文件
''' 实现了一个复制命令 ''' import sys def file_copy(src, dst): # 以读取的方式 打开源文件 file_r = open(src, 'rb') # 以写的方式打开目标文件 file_w = open(dst, 'wb') # 循环 while True: # 读取文件内容 content = file_r.read(1024) # 将读取的文件内容 写入到另一个文件中 if content == b'': print('文件拷贝成功') break # 写入文件 file_w.write(content) # 关闭文件 file_r.close() file_w.close() print(sys.argv) src=sys.argv[1] dst=sys.argv[2] file_copy(src,dst)
当然,上述代码会有一些功能尚未全面:下面这个代码涉及到以后的知识,先简单看下即可
- 需要确保目标目录存在,否则会出现错误。
- 没有考虑异常处理,如读取或写入文件时可能发生的异常
import os import sys def file_copy(src, dst): # 确保目标目录存在 os.makedirs(os.path.dirname(dst), exist_ok=True) # 打开文件 with open(src, 'rb') as file_r, open(dst, 'wb') as file_w: while True: content = file_r.read(4096) if not content: print("文件拷贝成功") break # 写入文件 file_w.write(content) if __name__ == "__main__": # 检查命令行参数的数量 if len(sys.argv) < 3: print("用法: python script.py <源文件> <目标文件>") sys.exit(1) src = sys.argv[1] dst = sys.argv[2] # 检查源文件是否存在 if not os.path.isfile(src): print(f"错误: 源文件不存在: {src}") sys.exit(1) file_copy(src, dst)
批量修改文件名,后复制
发布者:LJH,转发请注明出处:https://www.ljh.cool/41834.html