python 读写文本操作

发布时间 2023-05-24 17:03:53作者: 凡人半睁眼

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)  # 执行函数,带入用户输入的实参