python中os和shutil模块对文件的一条龙操作


一、创建文件

其实这个不需要考虑,在接下来修改文件的时候,如果文件不存在,会自动创建文件。

二、删除文件

1、删除文件。

对于文件,只需要os.remove('要删除的文件路径')

2、删除空的文件夹

上边的函数对于删除文件夹是不好使的,会提示你:“你没有权限读取这个文件。”对于空的文件夹,你需要用os.rmdir()函数。

3、删除非空的文件夹

对于非空的文件夹,要想用OS模块搞定就有些困难了,但是也不是没有办法,数学里有一种递归思想(把未知的问题转化为已知的问题)在这里就派上用场了:你需要遍历这个文件夹里的文件,先用1方法逐个删除文件后,再用2方法删除这个空的文件夹。

当然,懒惰使人进步,这么复杂的方法,当然没有人用了,这里还有一种更简单的方法:

shutil.rmtree('文件路径')

不过,在使用这个方法之前,需要先导入shutil这个内置包。

import shutil
4、花式删除

os.removedirs('文件路径')。这个方法会递归地删除目录。即如果子目录被成功删除,removedirs()并不会罢手,会继续删除父目录,直到“斩草除根”,如果子目录没有成功删除,将抛出错误。 

eg:加假如我们要删除grandfather/father/son这个目录,使用 os.removedirs('grandfather/father/son') 将首先删除 “grandfather/father/son”目录,然后再删除grandfather/father 和 grandfather( 前提是删除之前son是空目录,剩下两个目录里也没有其他文件)。

三、修改文件。

1、修改txt文件

第一步:读取文件。
f = open('文件路径','r+')

其中,参数r+的意思是可以对文件进行读写,另附参数表如下。

r+ 具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容
w+ 具有读写属性,写的时候如果文件存在,会被清空,从头开始写。
r 打开只读文件,该文件必须存在
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件
a(a+) 以附加的方式打开只写文件。若文件不存在,则建立文件,若文件存在,写入的数据会被加到文件尾。 
    

注:上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过Linux会忽略该字符。

第二步:替换文件内容。
for s in f.readlines():#f.readlines存放了文本内容
    s = s.replace('a','b')#把a替换成b
f.close()#修改完文件记得关闭

修改文件和这个相同,只需要把s.replace改成s.write('写入的内容')即可。

2、对文件(夹)的常用操作

1、移动文件:shutil.move(“旧文件夹”,”新文件夹”)

2、复制文件shutil.copyfile(“旧文件”,”新文件”) ,其中,oldfile和newfile都只能是文件

3、复制文件夹shutil.copytree(“旧目录”,”新目录”) #只能是对目录进行操作,且新的目录必须不存在

                              shutil.copy(“旧目录”,”新文件”) ,其中,旧目录只能是文件夹,newfile可以是文件,也可以是目标目录

4、重命名文件(夹): os.rename(“以前的名字”,”新的名字”)

附:另外一些常见的文件操作函数:

1. 得到当前的工作目录 : os.getcwd() 
2. 返回指定目录下的所有文件和目录名: os.listdir() 
3. 获取路径名:os.path.dirname() 
4. 获取文件名:os.path.basename() 
5. 检查是否是文件: os.path.isfile() 
6. 检查是否是目录: os.path.isdir() 
7. 判断是否是绝对路径:os.path.isabs() 
8. 检查路径是否存在: os.path.exists() 
9. 分离扩展名:os.path.splitext() #如果要返回后缀,取索引为1的值 
10. 获取路径名:os.path.dirname() 
11. 获取文件名:os.path.basename() 

猜你喜欢

转载自blog.csdn.net/u013044310/article/details/79764226