05,文件操作

1,文件的初识

利用python写一个软件,去操作文件
    基本条件:
        1、文件路径:path
        2、打开方式:读,写,追加,读写,写读......
        3、编码方式:utf-8,gbk,gb2312....
f1 = open('E:YT.txt', encoding='utf-8', mode='r')
content = f1.read()
print(content)
f1.close()
"""
open 是内置函数,open底层调用的是操作系统的接口。
f1,变量,f1,fh,file_handler,f_h,文件句柄。对文进行任何操作都要通过句柄
encoding:可以不写,不写参数是默认编码本:操作系统默认的编码
windows: gbk
linux: utf-8
ios:utf-8

f1.close() 关闭文件句柄

文件操作三部曲:
    1、打开文件
    2、对文件句柄进行相应的操作
    3、关闭文件
"""
open 是内置函数,open底层调用的是操作系统的接口。
f1,变量,f1,fh,file_handler,f_h,文件句柄。对文进行任何操作都要通过句柄
encoding:可以不写,不写参数是默认编码本:操作系统默认的编码
windows: gbk
linux: utf-8
ios:utf-8

f1.close() 关闭文件句柄

文件操作三部曲:
    1、打开文件
    2、对文件句柄进行相应的操作
    3、关闭文件
对句柄的操作
read()
read(n)
readline()
readlines()
# 文件对象的属性
print(f1.closed)  # True
print(f1.mode)  # r 查看模式
print(f1.name)  # E:YT.txt 返回文件名称

2,文件的读

r,rb,r+,r+b四种模式
    r(操作文本文件):read()***、read(n)、readline()、readlines()
    for***
    
    rb:操作的是非文本的文件。图片,音频,视频。

read() 全部读出来 ***

# read() 全部读出来 ***
f = open('文件的读', encoding='utf-8')
content = f.read()
print(content, type(content))
f.close()

read(n) 按照字符读取

f = open('文件的读', encoding='utf-8')
content = f.read(100)   # 读取前100个字符的内容
print(content)
f.close()

readline 按照行读

f = open('文件的读', encoding='utf-8')
print(f.readline())     # 每个命令读一行
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()

readlines()    

返回一个列表,列表中的每个元素是源文件的每一行,每次占内存只占一行,大文件用readlines

f = open('文件的读', encoding='utf-8')
l1 = f.readlines()
print(l1, type(l1))
f.close()

for 循环读 ***

f = open('文件的读', encoding='utf-8')
for line in f:
    print(line)
f.close()

rb 非文本文件 操作--一般对视频、音频、图片的读

f = open('歼-20.jpg', mode='rb')
content = f.read()
print(content)
f.close()

3,文件的写

w、wb、w+、w+b四种模式
    w:操作文本类文件
    wb:操作非文本类文件
    w+:写读
    w+b:以bytes类型进行写读

没有文件创建文件写入

# write()
f = open('文件的写',encoding='utf-8',mode='w')  # 文件名 编码方式 操作模式
f.write('随便写一点')
f.close()

如果文件存在,先清空原文件的内容,再写人新的内容

f = open('文件的写',encoding='utf-8',mode='w')
f.write('泰坦尼克号')
f.close()

wb  图片的复制

f = open('歼-20.jpg', mode='rb')
content = f.read()
# print(content)
f.close()

f1 = open('歼-202.jpg', mode='wb')
f1.write(content)
f1.close()

4,文件的追加

a、ab、a+、a+b 四中模式

没有文件创建文件写入

f = open('文件的追加',encoding='utf-8',mode='a')  # 文件名 编码方式 操作模式
f.write('泰坦尼克号')
f.close()

如果文件存在,不清空原文件的内容,直接写人新的内容

f = open('文件的追加', encoding='utf-8', mode='a')
# f.write('\n杰克和肉丝是主角')
f.write('\n杰克爱上了肉丝')
print('追加成功')
f.close()

5,文件操作的其他模式

读并且追加

f = open('文件的读写',encoding='utf-8',mode='r+')
content = f.read()
print(content)
f.write('杰克最后死掉了')
f.close()

先追加后读取   追加到最前面

f = open('文件的读写', encoding='utf-8', mode='r+')
f.write('杰克最后死掉了')
content = f.read()
print(content)
f.close()

错误实例

f = open('文件的读写', encoding='utf-8', mode='r+')
f.write('杰克最后死掉了')        # 只能追加中文
content = f.read()
print(content)
f.close()

6,文件操作的其他功能

获取光标的位置 单位是字节

# tell()
f = open('文件的读写', encoding='utf-8')
print(f.tell())         # 0 此时文件只打开没有读
content = f.read()
print(f.tell())     # 45 文件里有45个字节
f.close()

seek() 调整光标的位置开始读

f = open('文件的读写', encoding='utf-8')
print(f.seek(15))   # 一个中文三个字节因此seek()中的参数必须是3的倍数
content = f.read()
print(content)
f.close()

flush() 强制刷新--保存

f = open('文件的其他功能', encoding='utf-8',mode='w')
f.write('沙壤土柔荑花暖风机梳头发估计让他和他人忽然头发干画法个')
f.flush()
f.close()

7,打开文件的另一种方式

with:不用手动关闭句柄

with open('文件的读', encoding='utf-8') as f1:
    print(f1.read())

with open('文件的读', encoding='utf-8') as f1, open('文件的写', encoding='utf-8', mode='w') as f2:
    print(f1.read())
    f2.write('大厅房间号柔荑花天府国际和他分光')       # 如果文件存在,先清空原文件的内容,再写人新的内容

8,文件的改操作

改的流程:

        1,以读的方式打开原文件。
        2,以写的模式创建一个新文件
        3,将原文件的内容读出来修改成新的内容,写入新文件
        4,将原文件删除
        5,将新文件重命名成原文件
import os
# 1,以读的模式打开原文件。
# 2,以写的模式创建一个新文件
with open('alex自述', encoding='utf-8') as f1, \
        open('alex自述.bak', encoding='utf - 8', mode='w') as f2:
    # 3,将原文件的内容读出来修改成新内容,写入新文件
    old_content = f1.read()
    new_content = old_content.replace('alex', 'SB')
    f2.write(new_content)
os.remove('alex自述')
os.rename('alex自述.bak', 'alex自述')


# 进阶
with open('alex自述', encoding='utf-8') as f1, \
        open('alex自述.bak', encoding='utf - 8', mode='w') as f2:


# 3,将原文件的内容读出来修改成新内容,写入新文件
    for line in f1:
        new_line = line.replace('SB','alex')
        f2.write(new_line)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')

更多内容可以查看自己学python的过程,简单笔记。-CSDN博客

更多内容可以查看自己学python的过程,简单笔记。-CSDN博客

更多内容可以查看自己学python的过程,简单笔记。-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值