os模块
os模块全名是操作系统接口模块。os模块提供了大量的方法供我们来处理文件和目录方面的事情。
os模块的相关操作
(一)对文件的相关操作
1、重命名文件
os.rename(src, dst)
import os
# os.rename(src, dst) # src是旧文件名,dst是新文件名
os.rename("test.txt", "new_test.txt") # 如果旧文件名不存在会报错
2、删除文件
os.remove(path)
# os.remove(path)
os.remove('new_test.txt') # 删除的只能是文件,如果是目录会报错
3、生成单层目录
os.mkdir(path)
# 创建目录mkdir()
os.mkdir('file01') # 生成单层目录
4、创建多层目录
os.makedirs()
os.makedirs('test/test/test') # 递归常见目录,如果目录已存在会报错 exist_ok = True不报错
5、删除目录
os.rmdir(path)
当目录为空时才可以被删除
os.rmdir('file01') # 指定要删除的路径
6、删除多级目录
os.removedirs()
若目录为空则删除,并递归到上一级目录,若上一级目录也为空,也一起删除,以此类推,直到删除完或者某个路径不为空则停止。
os.removedirs('test/test/test') # 删除多级目录 删除时目录为空则删除
7、获取当前所在目录
os.getcwd()
path = os.getcwd() # 获取当前所在目录
print(path)
8、获取目录列表
os.listdir(path)
lst = os.listdir(os.getcwd())
print(lst)
9、切换文件所在目录
os.chdir(path)
os.chdir(os.getcwd() + '\\file01')
print(os.getcwd())
10、判断文件或者文件夹是否存在
os.path.exits(path)
ret = os.path.exits('file01/aq')
11、判断是否为文件
bool = os.path.isfile('demo01.py')
12、判断是否为目录
bool = os.path.isdir('test') # 是则返回True,不是则返回False
13、获取绝对路径
bool = os.path.abspath('test') # 是则返回True,不是则返回False
14、判断是否为绝对路径
bool = os.path.isabs(os.getcwd()) # 是则返回True,不是则返回False
15、获取路径中的最后部分
path = os.path.basename('file02/file03/aa')
print(path) # aa
print(__file__) # 获取当前文件的目录
path = os.path.basename(__file__)
print(path) # 获取当前路径的文件名,__file__为内置变量获取当前文件路径
16、获取路径中的路径部分
获取父目录部分(不管最后是文件还是文件夹)
dirname = os.path.dirname('/User/xt_zsh/PycharmProjects/Study/class.py')
os模块小练习
# 1.封装函数,可以实现文件复制(先读取目标文件,再写入新文件)
# 如:将111.txt复制一份,文件名为222.txt
"""文件复制"""
def copy(file1, file2):
with open(file1, "r") as f1:
content = f1.read()
with open(file2, "w") as f2:
f2.write(content)
copy("01.txt", "02.txt")
# 2.封装函数,可以实现文件备份(先读取目标文件,再写入新文件)
# 如:将111.txt复制一份,文件名为111_副本.txt
"""备份文件"""
def backup(file):
with open(file, "r", encoding="UTF-8") as f:
content = f.read()
ret = file.partition(".")
with open(ret[0]+"_副本"+ret[1]+ret[2], "w", encoding="UTF-8") as f_backup:
f_backup.write(content)
backup("movie.py")
#3.封装函数,打印某个文件内的所有的文件名
"""封装函数,打印某个文件内的所有文件名(采用函数的递归方法)"""
import os
# 传进来的路径必须是绝对路径,不然只会罗列此执行文件当前所在目录的文件
def file_list(dir_name):
for i in os.listdir(dir_name):
# 判断的路径也需要是绝对路径,如果是相对路径只会在执行文件所在目录中
if os.path.isdir(dir_name+"/"+i):
file_list(dir_name+"/"+i)
else:
print(i)
ret = os.getcwd()
print(ret)
file_list(ret)