代码改变世界

Python - os模块,、shutil模块

2022-04-14 11:37  起个昵称  阅读(31)  评论(0编辑  收藏  举报
os.path.abspath:获取文件或目录的绝对路径

os.path.dirname:获取文件或文件夹的路径

os.path.basename:获取文件名或文件夹名

os.path.splitext:分离文件名与扩展名

os.path.isfile/os.path.isdir:判断是否是文件/目录

os.walk:遍历目录

 

 1 """
 2 os模块
 3 """
 4 import os
 5 
 6 """os.path.abspath:获取文件或目录的绝对路径"""
 7 # 当前文件所在的目录  D:\python\demo
 8 print(os.path.abspath('.'))
 9 
10 # 当前文件的绝对路径  D:\python\demo\test.py
11 print(os.path.abspath(__file__))
12 
13 # 当前文件同级目录下的xxx.py文件路径,这里只是打印路径,即使文件不存在,也会输出这个路径
14 # D:\python\demo\xxx.py
15 print(os.path.abspath('xxx.py'))
16 
17 """os.path.dirname:获取文件或文件夹的路径"""
18 # 输出  D:/python/demo  斜杠跟abspath不一样
19 print(os.path.dirname(__file__))
20 # 输出空
21 print(os.path.dirname('xxx.py'))
22 # 输出subfolder
23 print(os.path.dirname('subfolder/xxx.py'))
24 
25 """os.path.basename:获取文件名或文件夹名"""
26 # 输出当前文件名  test.py
27 print(os.path.basename(__file__))
28 # 输出 xxx.py
29 print(os.path.basename('/subfolder/xxx.py'))
30 # 输出空
31 print(os.path.basename('/subfolder/'))
32 # 输出subfolder
33 print(os.path.basename('/subfolder'))
34 # 输出subfolder
35 print(os.path.basename('subfolder'))
36 # 综上,basename实际输出最后一个斜杠后的字符串
37 
38 """os.path.splitext:分离文件名与扩展名"""
39 # 输出 ('D:/python/demo/test', '.py')
40 print(os.path.splitext(__file__))
41 # 输出  ('test', '.py')
42 print(os.path.splitext('test.py'))
43 # 输出 ('/subfolder', '')
44 print(os.path.splitext('/subfolder'))
45 
46 """os.path.isfile/os.path.isdir:判断是否是文件/目录"""
47 print(os.path.isfile(__file__))   # True
48 print(os.path.isfile('D:/python/demo/test.py'))  # True
49 print(os.path.isfile('D:/python/demo'))    # False
50 print(os.path.isdir('D:/python/demo/test.py'))   # False
51 print(os.path.isdir('D:/python/demo'))     # True
52 # 路径必须存在,否做判断为False
53 
54 """os.walk:遍历目录"""
55 for root, dirs, files in os.walk(os.path.dirname(__file__)):  # 当前文件的目录
56     print(root)   # 目录
57     print(dirs)   # 列表:目录下的子目录
58     print(files)   # 列表:目下下的文件
59 
60 for r, d, f in os.walk('D:/python/demo'):
61     print(r)
62     print(d)
63     print(f)

 


定时删除文件/文件夹
 1 def run_task(filepath):
 2     """
 3     调用时给出路径后,此函数在此路径下不管是文件或文件夹都会删除
 4     :param filepath:
 5     :return:
 6     """
 7     del_list = os.listdir(filepath)
 8     for f in del_list:
 9         file_path = os.path.join(filepath, f)   # 传入的路径拼接此路径下的文件或文件夹
10         if os.path.isfile(file_path):   # 判断是文件,删除此文件
11             os.remove(file_path)
12         elif os.path.isdir(file_path):   # 判断是文件夹,则删除此文件夹
13             shutil.rmtree(file_path)
14 
15 
16 @sched.scheduled_job('cron', day_of_week='*', hour='*', minute='*/3', second='0')  # 每三分钟0秒运行一次
17 def scheduled_job():
18     run_task(path1)
19     run_task(path2)
20 
21 
22 if __name__ == '__main__':
23     sched.start()

 

新建文件夹、删除空文件夹、返回当前执行文件所在的目录

 1 import os
 2 
 3 
 4 folder_path = r'D:\Images\20220425\1112'
 5 
 6 os.mkdir(folder_path)   # 新建此文件夹
 7 
 8 os.rmdir(folder_path)    # 删除空内容的文件夹
 9 
10 print(os.getcwd())   # 返回当前工作目录