Python 文件操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 文件操作相关的知识,希望对你有一定的参考价值。
参考技术A open(filename[,mode,encoding="编码"]) :第一个参数文件名如果不加路径,默认在该py文件目录下(路径举例: E:/XXX或E:\\\\xxx ),第二个是模式,默认为 \'r\' ——只读,举例: f = open(\'E:/abc.txt\') ,如果要转编码并写入模式:
f = open(\'E:/abc.txt\',\'w\',encoding=\'utf-8\')
1. 模式
2. 方法
(1) close() : 关闭文件,因为文件写入时是写在内存,只有关闭时才写入硬盘,所以写完记得关闭
(2) read(size = -1) :读取文件size个字符,不写默认是-1,此时读取所有内容(换行按\\n来表示,很不好看),并作为字符串返回,一定要注意 读完以后文件指针将会指向末尾 ,所以下一次在用read方法时会发现读取不出内容了,所以这个就要用seek移动指针或者关闭文件重新定义
(3) tell() :返回当前文件指针指向的位置
(4) seek(offset,from) :移动文件指针,代表从from参数开始偏移offset个字节,0代表起始位置,1代表当前位置,2代表文件末尾
(5) readline() :按序列读取一行内容,默认\\n为边界
(6) write() :写入内容,但必须要有写入权限才行,否则报错,写完会返回写入的长度,例如: len1 = f.write(\'abc\') ,此时len1就为3
(7) truncate() :删除内容,把当前指针以后的内容全删了,举例:
注:
1.文件还可以转化为 list 之类的,例如: list1 = list(f) ,此时文件内容的按\\n被隔开,然后可以用for语句读取文件所有内容,举例:
2.上面输出文件内容方法相对低效,所以一般都直接用for输出整个文件,举例:
通过 fileno 函数,我们可以查看一个文件对应的文件描述符,对应的是程序中打开的文件序号,举例:
可以看出python在启动时会先启动标准流的文件(文件描述符分别为:0/1/2),所以之后打开的文件就从3开始递增,当释放一个文件资源时,该描述符序号被释放,之后打开的文件可以继续使用该序号的文件描述符
python中的 print 的本质是通过 sys.stdout 来进行内容输出,而 sys.stdout 的本质是一个"文件",相当于我们所有的输入输出的本质都是在对 sys.stdin / sys.stdout / sys.stderr 这些文件来进行读写操作,举例:
open 函数不仅可以打开本地文件,也可以打开文件描述符,而该参数默认为 True ,代表 close 后会将对应的文件资源释放,而对于一些文件描述符,我们只是希望 close 时将打开文件描述符的对象释放,而不释放对应的文件资源,那么则可以设置 closefd=False ,举例:
需要使用到 chardet 模块,按二进制可读打开文件,然后通过 detect() 方法查看,举例:
所以就可以根据文件来设置编码了:
有时候使用文件的编码解码也可能会出现无法解析的情况,例如两种编码混在同一个文件里的时候,此时可以设置 errors 参数为 ignore 来避免该问题,示例:
可用 os 模块下的 chmod() 函数,具体参考: http://www.runoob.com/python/os-chmod.html
使用 os 模块下的 remove() 函数可以实现删除文件,举例:
可以使用自带的 zipfile 模块来进行操作,举例:
可以使用自带的 tarfile 模块来进行操作,举例:
https://www.cnblogs.com/lotusto/p/5805543.html
python 文件操作python 文件操作
计算机由软件、系统、硬件组成。
python或其他语言编写的应用程序如果想要把数据永久保存下来,需要把数据写到硬盘上面,这就涉及到应用程序操作硬件,众所周知,程序无法直接操作硬件,这就用到了操作系统。系统 把复杂的硬件操作封装成简单的接口/应用程序使用,其中文件就是操作系统供给程序操作硬盘的虚拟概念,用户或应用程序操作文件,可以将数据永久保存下来
文件的操作步骤:
1、打开文件,并返回一个语句柄并赋值一个变量
2、通过返回的语句柄操作文件
3、关闭文件
# 打开文件,得到语句柄赋值给一个变量
f = open("test.txt", ‘w‘, encoding = "utf-8")
#对文件操作
f.write("11111")
#关闭文件
f.close()
#1、应用系统向操作系统发起一个open(。。。。)
#2、操作系统打开该文件,并返回一个语句柄
#3、应用程序把语句柄赋值给一个变量
#打开一个文件包含两个资源:一个是操作系统级打开文件,另一个为应用程序变量,操作完一个文件后需要把与该文件这两部分资源全部回收,
第一种方法:f.close()
第二种方法:del f
f.close(),一定要在del f 之前,否则系统打开的文件没有关闭,白白占用资源。python有垃圾自动回收机制,无需考虑del f
最好的方法可以使用with open(‘test.txt’,‘w‘)as f:
pass
with open(‘test.txt‘,‘r‘) as read_f ,open(‘tate.txt‘,‘r‘) as write_f:
data = read_f.read()
write_f.write(data)
文件以什么编码编写,需要使用对应的编码打开
文件打开模式(默认文本模式):
r :默认读模式【默认模式,文件必须存在,否则报错】
w:只写模式【不存在则创建,存在则清空内容】
a:只追加写模式【不可读,不存在者创建,存在则只追加内容】
以上只适用文本模式,如需打开图片、视频、,需要使用b模式打开,表示字节操作(图片、视频,是以字节编码存储,无需考虑编码方式)
wb
rb
ab
注释:以b模式打开文件,读取内容以字节方式,写入也需要字节方式,不能指定编码
# “+”表示可以同时读写某个文件
r+ :读写【可读、可写】
w+ :写读【可写,可读】
a+ :写读【可读、可写】
x:只写【不可读,不存创建,否则报错】
x+ :写读【可读,可写】
read(3),文本模式:读取三个字符串,b模式:3个字节、
光标:
seek(0),tell,truncate()都是一字节单位:
seek 有三种方式0,1,2,其中1,2必须在b模式下进行,truncate截断文件,不能以w/w+ 进行,那样会清空文件,请在r+/a/a+ 模式下进行。
with的方便之处:在于防止打开文件,而忘记关闭
文件的修改有两种方法,第一种:一次性读出,操作后,然后在写入另外一个文件。然后把之前的文件删除,被写入的文件重命名为删除的文件名称
第二种:可以一行一行读入然后修改,修改后保存至另外一个文件内
文件操作:流程
找到——>以什么方式打开——>操作——>关闭
f = open(‘test‘,"w")
1、读文件的方式(从文件中获取的内容都是字符串):
一、read 方法,一次性的读出文件所有内容
二、f.read(5)独一部分,读五个字符、换行符也算
三、readline、按照行读,每次执行readline 就会读下一行
四、readlines、返回一个列表,将列表中每一行作为列表的元素返回一个列表
strip()去掉空格、制表符、换行符
五、for循环:for i in f:
print(i)
以上是关于Python 文件操作的主要内容,如果未能解决你的问题,请参考以下文章