Python文件操作
Posted Knock knock...
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python文件操作相关的知识,希望对你有一定的参考价值。
- 文件的基础知识
- 相对路径和绝对路径
- r w a
- rb wb ab
- r+ w+ a+
- r+b w+b a+b
- 文件操作的其他方法
- 修改文件
f=open(‘文件路径‘,mode=‘‘,encoding=‘编码集合‘)
f叫做文件句柄
打开文件后,要记得f.close()
相对路径和绝对路径
绝对路径:从C盘的根目录全部写
相对路径:比如说f=open(‘t1‘,mode=‘r‘,encoding=‘utf-8‘)
t1相对与该py文件的路径成为相对路径
跳到上一层用../
with open(‘..//day6//1.jpg‘,mode=‘rb‘)as f: print(f.read())
#绝对路径:读取一张图片 # with open(r‘C:UsersSinceDesktop1.jpg‘,mode=‘rb‘) as f: # print(f.read()) # r‘C:UsersSinceDesktop1.jpg‘==‘C:\Users\Since\Desktop\1.jpg‘ # 相对路径:把1.jpg放到该py文件下 # with open(‘1.jpg‘,mode=‘rb‘)as f: # print(f.read())
r
f=open(‘t1‘,mode=‘r‘,encoding=‘utf-8‘) # ret=f.read()#把文件中的内容全部读出来,并且读完后光标会默认指到最后一个位置 # # 缺点:若文件内容过大,内存会溢出,不安全 # print(ret)#mode不写默认为r,在r模式下,如果没有文件会报错 # f.close() # rer=f.read(3)#读他t1前3 个字符 # print(rer) # f.close() # line1=f.readline()#一行一行的读,并且会把末尾的 给读出来 # print(line1) # line2=f.readline() # print(line2) # lst=f.readlines()#一次性全部读出来,并且读出来的每一行存到一个列表中 # print(lst) # for line in f:#相当于readline,大型文件推荐用该方法一行一行的读取 # print(line)
w
f=open(‘t2‘,mode=‘w‘,encoding=‘utf-8‘) # 在w模式下,没有文件会默认创建一个文件 #w又称为覆盖写,在每次w文件时,光标都会默认移动到开头 # f.write(‘Hello‘) f.write(‘how are you‘) f.close()
a
f=open(‘t1‘,mode=‘a‘,encoding=‘utf-8‘)#a是追加写,在一个文件的末尾追加写 f.write(‘我们都好‘) f.close()
b模式下就是:以字节的形式操作,一般视频,图片存在电脑里是以字节的形式存储
rb
f=open(‘t1‘,mode=‘rb‘)#rb就是以字节的形式把文件读出来 print(f.read()) f.close()
wb
# 相当于把1.jpg复制了一份为2.jpg # with open(‘1.jpg‘,mode=‘rb‘)as f,open(‘2.jpg‘,mode=‘wb‘)as f1: # ret=f.read() # f1.write(ret)
ab
r+(读写)
with open(‘t1‘,mode=‘r+‘,encoding=‘utf-8‘)as f:#正常情况先把整个文件读完(此时光标在末尾),再写 print(f.read()) # f.seek(0) f.write(‘我们都很好‘)
w+(写读)
with open(‘t1‘,mode=‘w+‘,encoding=‘utf-8‘)as f:#正常情况下先写在读,此时光标在最后,read不出来 f.write(‘哈哈哈‘) f.write(‘呜呜呜‘) f.seek(0) print(f.read())
a+(追加写 ,读)
with open(‘t1‘,mode=‘a+‘,encoding=‘utf-8‘)as f:#正常情况下先写在读,此时光标在最后,read不出来 f.write(‘哈哈哈‘)#区别是在文件的末尾去追加写 f.seek(0) print(f.read())
总结:
r和rb下的
r: f.read(n) 得到的是前n个字符
rb: f.read(n)得到的是前n个字节
文件的其他的操作
seek()——按照字节
with open(‘t1‘,mode=‘r+‘,encoding=‘utf-8‘)as f: f.seek(0)#此时光标在最开始 ret=f.read()#光标在最后面 print(ret) f.seek(0) f.seek(0,2)#将光标移动末尾 print(f.tell()) f.write(‘你好‘) # seek(n)是将光标移动到n位置,移动单位是Bytes,utf-8是3个字节 # 用法seek(0,0) seek的第二个参数,0表示开头,1表示当前位置,2表示末尾
tell()告诉光标的位置——按照字节
truncate()截断文件——按照字节
# truncate()截断文件 # with open(‘t1‘,mode=‘w‘,encoding=‘utf-8‘)as f: # f.write(‘哈哈‘) # f.seek(3)#将光标移动到3 # f.truncate()#从当前位置的光标到末尾的内容全部删除 # truncate(n)如果给了n就从开头进行截断,不给n就从当前位置删除 f=open(‘t1‘,mode=‘r+‘,encoding=‘utf-8‘) print(f.read()) f.truncate(3) f.close() # truncate(n)的意思是从第2个字(包括第二个字)到后面都删除, # 也必须遵循utf-8的机制,按照字节去删除
修改文件:
# 修改文件 import os with open(‘t1‘,encoding=‘utf-8‘)as f, open(‘t1_new‘,mode=‘w‘,encoding=‘utf-8‘)as f1: for line in f: new_line=line.replace(line,"冰糖葫芦 ") f1.write(new_line) os.remove(‘t1‘) os.rename(‘t1_new‘,‘t1‘) 修改文件的方法:先把源文件给删掉,在重新命名t1_new,成t1即修改了文件
以上是关于Python文件操作的主要内容,如果未能解决你的问题,请参考以下文章