1、文件的基本操作
1. 打开文件 2. 操作文件 3. 关闭文件 关键字:open
方式1
f=open(r'a.txt', 'r', encoding='utf-8') # f = open(r'a.txt', mode='r', encoding='utf-8') res = f.read() print(res) # # 关闭文件:释放资源的 # f.close()
方式2
# with上下文管理器
with open('a.txt', 'r', encoding='utf8') as f:
print(f.read())
2、
r:read(读) w:write(写) a:append(追加写) # 读模式 # 1. 路径不存在,直接保存 # with open('a.txt', 'r', encoding='utf8') as f: # pass # 2. 路径存在 # with open('a.txt', 'r', encoding='utf8') as f: # print(f.read()) # 写模式 # 1. 路径不存在的, 会自定创建出来文件 # with open('a.txt', 'w', encoding='utf8') as f: # pass # 2. 路径存在 # 把文件内的原本数据情况掉,从新写入,覆盖!!! # w模式很危险, # with open('a.txt', 'w', encoding='utf8') as f: # # f.write('hello big baby!') # f.write(str(123)) # 写文件的数据类型必须是字符串类型,和字节类型,其他类型都不能直接写入, # 3. 追加模式 # 3.1 路径不存在,会自动创建文件出来 with open('a.txt', 'a', encoding='utf8') as f1: f1.write('hello baby!') # 路径存在,在文件的原来数据后面继续追加新的内容 with open('a.txt', 'a', encoding='utf8') as f1: f1.write('hello baby!\n')
3、
with open('a.txt', 'r', encoding='utf8') as f: ''' read方法它是一次性读取文件的所有内容,所以,当文件内容非常大的时候,有可能会造成内存溢出 我们不允许内存溢出的情况出现,但是当文件内容非常小的时候,无所谓了, 针对上述出现的问题,如何解决呢? ''' # print(f.read()) # 一次性把文件中的内容读取完毕 # 变量f它值支持for循环的 for line in f: print(line) # for循环就是一行一行的读取内容的 '''所以,以后读文件的时候,如果觉得文件很大,我们就是要for循环一行一行的读取'''
4、
t 模式:text文本
r >>> rt w >>> wt a >>> at """ 1. 它是以字符串位基本单位 2. 它只能操作字符串形式 3. encoding参数必须写 """
b模式:bytes二进制模式(读写音、视频文件只能用b模式)
r >>> rb w >>> wb a >>> ab """ 1. b不能省略,必须写 rb 2. 它可以操作任意的数据类型:视频、音频、图片等都可以 3. encoding参数必须不能写 4. 它的数据以字节为单位了 """
操作图片案例
# 做一个简易版本的拷贝工具
source_file_path = input(r'请输入你想要拷贝的原文件路径(如:r"C:\path\to\file"):')
# /Users/sanpangdan/Desktop/python_fullstack/10018.jpg
target_file_path = input(r'请输入你想要拷贝到的目标路径(如:r"C:\path\to\file"):')
# /Users/sanpangdan/Desktop/python_fullstack/aa/ccc.jpg
# 定义一个函数
def copy_file(source_file_path, target_file_path): # 源路径和目标路径作为形参
with open(source_file_path, 'rb') as source_file: # 二进制读模式打开源文件,别名为 source_file
with open(target_file_path, 'wb') as target_file: # 二进制写模式打开目标文件地址,别名为target_file
target_file.write(source_file.read()) # f.write,写的内容来自上一层的读内容
print(f"Copy {source_file_path} to {target_file_path} succeeded.") # 打印复制成功提示
copy_file(source_file_path, target_file_path) # 执行函数,带入用户输入的实参