文件的作用:进行持久化存储数据
文件操作介绍
程序操作文件过程
- 打开->设置打开模式(读写)
- 操作文件(读取)
- 关闭->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
 
                