Python之文件处理

一、文件处理流程

1、新建一个txt文件:

 

2、文件操作流程:打开==》读/写==》关闭

注意:如果不指定编码,则文件将以你当前操作系统的默认编码格式打开 

 

3、文件读取操作

file = open("牧马城市", "r", encoding='utf-8')  # 只读文件

 

4、文件写入操作(文件名存在,清空原文件内容;文件名不存在,则新建一个文件)

file = open("牧马城市", "w", encoding='utf-8')  # 只写文件

 

5、文件追加操作

file = open("牧马城市", "a", encoding='utf-8')  # 追加文件

追加模式后使用写入功能添加到文件的末尾

 

6、文件关闭

file.close()

 

7、文件其他操作模式:

file = open("牧马城市", "r+", encoding='utf-8') # 支持文件的读写
file = open("牧马城市", "a+", encoding='utf-8') # 支持文件的读写

 

8、模拟文件的打开修改关闭过程

(1)、open()函数打开文件

(2)、read()函数读出全部数据并保存

(3)、对保存的数据做需求修改处理并保存

(4)、关闭文件

(5)、再次打开文件

(6)、将修改后的数据写入文件中

(7)、关闭文件

 

9、with  as 用法替换close操作

with open('a.txt', 'w') as f:
    f.write("使用with+as简化关闭操作")
with open('a.txt', 'r', encoding='gbk') as f1, open('b.txt', 'w', encoding='gbk') as f2:
    data = f1.read()
    f2.write(data)

10、文件b模式操作

# 文件b模式操作(二进制模式)
# 注意:文件在保存的时候是以unicode二进制的形式保存在硬盘上面的,所以使用这种形式打开文件不能指定文件编码格式
# 编码字符串======》encode ======》编码转换成二进制存储
# 读取出二进制 ======》 decode ======》解码转换成字符串

# b模式读取
file = open("牧马城市", "rb")
data = file.read()  # 读取出原生的二进制内容
print("使用b模式读取到的原生的二进制文件内容是:", data)
print("使用b模式读取到的解码后的文件内容是:", data.decode('utf-8'))
file.close()

# b模式写入
file = open("c.txt", "wb")
# 两种将字符串转换成bytes的方式
file.write(bytes('你好,世界\n', encoding='utf-8'))
file.write('呵呵哒\n'.encode(encoding='utf-8'))
file.close()

# b模式追加
file = open("c.txt", "ab")
file.write('滚犊子\n'.encode(encoding='utf-8'))  # 在文件的最后一个位置写入
file.close()

 

11、文件操作的其他函数方法

file = open("d.txt", "w")
print("判断文件是否关闭:", file.closed)
print("查看文件打开的编码格式;", file.encoding)
print("将新的内容刷新到硬盘上面:", file.flush())
print("是否在中断上面执行的:", file.isatty())
print("打开文件的文件名:", file.name)
print("光标在文件中的位置:", file.tell())
print("控制文件中光标的移动:  ", file.seek(3))
print("从起始位置开始截取多少位:", file.truncate(10))

 

12、文件操作之seek()函数详解:

# seek(x,0)默认从文件的开头开始计算
file = open("d.txt", "r", encoding="utf-8")
print(file.tell())
file.seek(10, 0)
print(file.tell())
file.seek(3, 0)
print(file.tell())

# seek(x,1)指定从相对位置(上一次光标停留的位置)开始移动,以rb的模式进行操作
file = open("d.txt", "rb")
print(file.tell())
file.seek(10, 1)
print(file.tell())
file.seek(3, 1)
print(file.tell())

# seek(-x,2)从文件末尾开始倒序
file = open("d.txt", "rb")
print(file.tell())
file.seek(-6, 2)
print(file.read())
print(file.tell())

# 适用场景:查看日志文件的最后的内容
file = open("d.txt", "rb")
# for item in file:  # 文件循环直接循环文件本身就行
offset = -20
while True:
    file.seek(offset, 2)
    data = file.readlines()
    if len(data) > 1:
        print("文件的最后一行是: %s" % (data[-1].decode('utf-8')))
        break
    offset *= 2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值