python文件操作

本文详细介绍了Python中文件操作的相关知识,包括文件的介绍、读写文件的简单操作、文件权限、文件操作、with方法以及处理乱码问题。内容涵盖了文件的打开、读取、写入、追加、文件指针定位等多种操作,并探讨了Python文件操作中的编码问题和使用os模块进行文件管理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来说道说道与文件相关的一些操作

一、文件的介绍

1、什么是文件 狭义说:文本文件;广义说:超文本文件, 图片,声音,超链接,视频。
2、文件的分类 文件大体上可以分为两类,文件文件和二进制文件。
3、文件的作用 使用文件的目的是把一些数据存储存放起来。 4、使用文件的流程 我们操作一个文件的流程一般是 打开文件,读写文件,关闭文件。通过程序操作文件 的流程也是这三步,首先打开文件,然后读写文件,最后关闭文件。

二、读写文件的简单操作

1.读取文件

#read读取
file=open("将进酒", mode='r')#打开文件夹中的文件   第一个参数是文件的路径,第二个参数 mode=访问文件的模型,r 表示读,默认也是r 模式
ret=file.read()#读取文件中的所以内容
print(ret)
file.close()#关闭

2.写文件

file=open("./b.txt",mode="w")#打开文件
ret=file.write("hahahahah")#写文件内容
file.close()#关闭文件

注:如果文件不存在,会自动创建文件(不会创建目录)

三、文件权限

  • 读取操作
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开 头。一般用于非文本文件如图片等。 注意:二进制文件把内容表示为一个特殊的bytes字符串类型。
    r+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开 头。一般用于非文本文件如图片等。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开 头。一般用于非文本文件如图片等。
  • 写操作
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头 开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文 件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在, 创建新文件。一般用于非文本文件如图片等。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开 始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文 件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在, 创建新文件。一般用于非文本文件如图片等。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件 的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文 件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针 将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之 后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件 的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件 用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针 将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

四、文件操作

1.读操作
(1)read
调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,会导致程序卡 死,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字符的内容。

file=open("将进酒", mode='r')
ret=file.readline()#每次读取三个字符
print(ret)
file.close()

(2)readline
readline每次读取一行,并且自带换行功能 每一行末尾会读到\n

file=open("将进酒", mode='r')
ret=file.readline()
print(len(ret))#末尾有一个换行符\n
print(ret)
print(file.readline())
print(file.readline(3))#读取指定个字符
file.close()

(3)readlines()
Readlines,一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来

file=open("将进酒", mode='r')
ret=file.readlines()
for i in ret:#遍历读取出来
    print(i)
file.close()

(4)循环读取
file句柄是一个可迭代的对象因此,可以循环读取文件中的内容,每次读一行。

#循环读,每次读一行
file=open('将进酒')
for i in file:
    print(i)

2.写操作
(1) .write()

file=open("./蜀道难.txt",mode="w")
ret=file.write("""
蜀道难
=*=*=*=*=*==**=*=*=**=*=*=*=*=*=*==*
唐·李白
噫吁嚱,危乎高哉!蜀道之难,难于上青天!
蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。西当太白有鸟道,可以横绝峨眉巅。地崩山摧壮士死,然后天梯石栈相钩连。
上有六龙回日之高标,下有冲波逆折之回川。黄鹤之飞尚不得过,猿猱欲度愁攀援。青泥何盘盘,百步九折萦岩峦。扪参历井仰胁息,以手抚膺坐长叹。
问君西游何时还?畏途巉岩不可攀。但见悲鸟号古木,雄飞雌从绕林间。又闻子规啼夜月,愁空山。蜀道之难,难于上青天,使人听此凋朱颜。
连峰去天不盈尺,枯松倒挂倚绝壁。飞湍瀑流争喧豗,砯崖转石万壑雷。其险也如此,嗟尔远道之人胡为乎来哉!
剑阁峥嵘而崔嵬,一夫当关,万夫莫开。所守或匪亲,化为狼与豺。
朝避猛虎,夕避长蛇;磨牙吮血,杀人如麻。锦城虽云乐,不如早还家。蜀道之难,难于上青天,侧身西望长咨嗟! 
""")
file.close()

(2) .writelines() file.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。

file=open("./b.txt",mode="w")
list=['aa\n','bb','cc']
file.writelines(lst)
file.close()

3、其他操作
(1).tell() tell获取文件当中当前光标所在的位置
(2) .seek() seek():移动文件读取指针(光标)到指定位置
seek()的三种模式:
-f.seek(x,0) 第二个参数0 表示绝对位置(文件的开头位置),第一个参数x表示文件开头的第几个字节位置 开始读取内容。

  • f.seek(-1,1)第二个参数1表示相对位置(光标当前位置),第一个参数X表示移动几个字节开始读取。 注意:如果是操作文本x只能是0 ,如果是以二进制模式操作 x可以是其他内容。
  • f.seek(x,2) 2表示光标在文件的末尾,x表示从文件末尾开始移动几个位置后开始读 取,注意: 如果是文本只能是0,如果是二进制模式,x可以是其他内容
#tell告诉光标位置
file=open("将进酒",mode="r")
ret=file.read(3)
pos=file.tell()
print(ret)
print(pos)
file.close()
#seek  移动文件读取指针光标到指定位置
file=open("将进酒",mode="r")
file.seek(3,0)
pos=file.tell()
print(pos)
file.close()

(4) .name和mode
file.name 返回 路径
file.mode 返回 文件读写模式

五、with方法

使用with方式操作文件,可以不用关闭文件,会自动关闭文件

with open('梦游天姥吟留别') as file:
    ret=file.read()
    print(ret)

六、乱码

python读写文件时,默认使用的编码为平台编码,也就是gbk。 在pycharm中创建的文件默认使用的是utf-8编码。

  1. 往pycharm中的k.txt中保存内容。 乱码
with open('file/le.txt',mode='w') as f:
    f.write("哈哈哈哈哈哈哈哈哈哈哈")

在这里插入图片描述
2.向磁盘中的文件保存内容,不乱码。

with open('c:/work/le.txt',mode='w') as f:
    f.write("哈哈哈哈哈哈哈哈哈哈哈")
  1. 指定编码
with open('c:/work/le.txt',mode='w',encoding='utf-8') as f:
    f.write("哈哈哈哈哈哈哈哈哈哈哈")

七、文件其他操作

使用os模块对文件进行一些相关操作
1.重命名文件
在这里插入图片描述
2.删除文件
在这里插入图片描述
3.创建目录 mkdir()
生成的是单层目录
在这里插入图片描述
4.创建多级目录
在这里插入图片描述
5. 删除目录 删除一层空目录。
在这里插入图片描述
6.删除多级目录 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推。
如果上一层目录不为空则停止删除文件。如果file04不为空则报错。
在这里插入图片描述
7.获取当前所在目录 getcwd()
在这里插入图片描述
8.获取目录列表 在这里插入图片描述
9. 切换所在目录 chdir() 改变当前脚本工作目录 在这里插入图片描述
10.判断文件或文件夹是否存在 os.path.exits(path) 在这里插入图片描述
11.判断是否为文件在这里插入图片描述
12.判断是否为目录 在这里插入图片描述
13. 获取绝对路径 在这里插入图片描述
14. 判断是否为绝对路径 在这里插入图片描述
15. 获 取路径中的最后部分 在这里插入图片描述
16. 获取路径中的路径部分 获取父目录部分。(不管最后是文件还是文件夹) 在这里插入图片描述
17. 将多个目录组织成路径返回 在这里插入图片描述
18.获取文件信息
1.getatime()返回path所指向的文件或者目录的最后访问时间 2.getctime()查看文件创建时间
3.getmtime()返回path所指向的文件或者目录的最后修改时间 4.getsize()查看文件的大小
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值