【Python】文件处理总结

【Python】文件处理总结

一,文件操作

1,文件打开

open(filename,mode)
#filename:文件路径
#mode:打开方式

文件打开方式:
在这里插入图片描述
(1)默认以只读方式打开。
(2)使用‘r+’方式可读写,并且文件指针在文件开头,并不清空文件内容。
(3)“w”和“w+”方式打开时,文件不存在则自动创建文件,文件存在则先将文件内容清空。若要避免清除,可以使用‘a’方式追加写入到文件末尾。
(4)使用‘+’方式,既可以读又可以写。
2,文件读取

read(size):读取文件,读取size字节,默认读取全部。
readline(size):读取一行
readlines(size):读取完所有内容,返回每一行组成的列表;
iter:使用迭代器读取文件。

(1)readline设置size大小时,len(line) > size return size,len (line) < size return len(line)。
(2)默认缓存大小:io.DEFAULT_BUFFER_SIZE
(3)使用迭代器遍历文件,按行遍历

iter :使用迭代器读取文件
f = open(filename)
iter_f = iter(f)
lines = 0 
for  line  in iter_f:
     lines + =1

3,文件写入与写缓存

write(str):将字符串写入文件
writelines(seq_of_strings):写多行到文件,参数为可迭代对象

(1)writelines的参数必须是字符串序列,元组,迭代器。
(2)写缓存,调用write后先将内容写入都“文件缓冲”中,当调用close(),或者flush()后,才会将内容写到设备中,并清除缓冲。
(3)当写入的内容大于缓存区容量时,会自动将内容写入设备。
4,文件关闭
(1)为什么要关闭文件?
1,将写缓存同步到磁盘文件中。
2,系统中打开文件的个数有限制,超过限制将无法打开。
(2)可以使用with语句避免忘记关闭

with open("somefile.txt") as file:
    data = file.read()

5,文件指针
文件读写过程可能会存在以下问题:
1,写入文件时,无法读取已经写入的文件,只有关闭后再打开才可以读取到,
2,读取文件时,无法再次读取已经读取过的内容。
其实这跟文件指针有关,当我们对文件操作时,文件内部会有一个文件指针移动来定位当前位置。刚才的问题图解:
在这里插入图片描述
当open时文件指针是在初始位置1,当写入4个字节内容是文件指针位置就在4,再read时,文件指针从4移到6,所以,无法读取到前面写入的内容。
在这里插入图片描述
当open时文件指针是在初始位置1,当读取3个字节内容是文件指针位置就在3,再read时,文件指针从3移到5,所以,无法读取到前面刚读取的内容。

文件指针操作:

seek(offset, whence):移动文件指针
offset:偏移量,可为负数
whence:偏移相对位置

偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:

os.SEEK_SET:表示文件的相对起始位置
os.SEEK_CUR:表示文件的相对当前位置
os.SEEK_END:表示文件的相对结束位置

若要查看当前文件偏移量可以使用tell()方法

f = open('test.txt','w')  
f.tell()   #0
f.write('123456') 
f.tell()   #6

二,文件属性

1,文件属性

f.fileno():文件描述符
f.mode:文件打开权限
f.encoding:文件编码格式
f.closed:文件是否关闭

2,标准文件

文件标准输入:sys.stdin    文件描述符:0
文件标准输出:sys.stdout    文件描述符:1
文件标准错误:sys.stderr      文件描述符:2

3,文件命令行参数
sys模块提供sys.argv属性,通过该属性可以得到命令行参数。sys.argv为字符串列表。

import sys
if __name__ =='__main__':
        print (len(sys.argv))
        for arg in sys.argv:
                print (arg)

三,os模块与shutil模块

1,os模块

得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
返回指定目录下的所有文件和目录名:os.listdir()
函数用来删除一个文件:os.remove()
删除多个目录:os.removedirs(r“c:\python”)
运行shell命令: os.system()
读取和设置环境变量:os.getenv() 与os.putenv()
给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
重命名:os.rename(old, new)
创建多级目录:os.makedirs(r“c:\python\test”)
创建单个目录:os.mkdir(“test”)
获取文件属性:os.stat(file)
修改文件权限与时间戳:os.chmod(file)
终止当前进程:os.exit()
检验给出的路径是否是一个文件:os.path.isfile()
检验给出的路径是否是一个目录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检查是否快捷方式os.path.islink ( filename )
检验给出的路径是否真地存:os.path.exists()
返回一个路径的目录名和文件名:os.path.split() 
分离扩展名:os.path.splitext()
获取路径名:os.path.dirname()
获取文件名:os.path.basename()
获取文件大小:os.path.getsize(filename)

2,shutil模块

目录操作:
os.mkdir("file") 创建目录
复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在
重命名文件(目录)
os.rename("oldname","newname") 文件或目录都是使用这条命令
移动文件(目录)
shutil.move("oldpos","newpos") 
删除文件
os.remove("file")
删除目录
os.rmdir("dir")只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删
转换目录
os.chdir("path") 换路径
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python批量处理txt文件可以采取以下几种方法: 1. 使用os库创建txt文件:通过使用os库的相关函数,可以遍历指定文件夹下的所有文件,并根据需要创建txt文件。[1] 2. 使用Python读取txt文件并进行处理:可以使用open函数打开txt文件,然后逐行读取文件内容,进行相应的处理操作,例如提取关键信息、修改内容等。 3. 使用Python批量修改txt文件名:通过使用os库的相关函数,可以批量修改txt文件文件名,例如添加前缀、后缀或者根据文件内容进行命名。 4. 使用Python批量删除txt文件的第一行:可以使用open函数打开txt文件,逐行读取文件内容,并删除第一行或者指定行数的内容,然后将修改后的内容写回到原文件中。 通过以上方法的组合,你可以根据具体需求来批量处理txt文件。例如,你可以使用os库创建一组新的txt文件,然后使用open函数逐个读取原始txt文件内容,并按照需要进行处理后写入新的txt文件中。同时,你还可以使用os库的相关函数批量修改、删除、提取指定文件夹下的txt文件。 请根据具体情况选择适合的方法来处理txt文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python批量处理文件的方法总结(包括folder、txt、xml、excel)](https://blog.csdn.net/qq_44701243/article/details/120038287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值