1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#encoding: utf-8 #author: walker #date: 2017-06-15 #summary: 自定义文件夹处理函数,适用于python3.5+ import os
import shutil
import win32com.client
#清空目录 def ClearDir( dir ):
print ( 'ClearDir ' + dir + '...' )
for entry in os.scandir( dir ):
if entry.name.startswith( '.' ):
continue
if entry.is_file():
os.remove(entry.path) #删除文件
else :
shutil.rmtree(entry.path) #删除目录
#获取目录大小 #不存在或空目录都返回0 def GetDirSize(pathdir):
if not os.path.exists(pathdir):
print ( 'Warning: not exists %s' % pathdir)
return 0
fso = win32com.client.Dispatch( 'Scripting.FileSystemObject' )
folder = fso.GetFolder(pathdir)
return folder.Size
''' # 合并源目录到目标目录,源目录中的空目录不会被处理 # src_dir: 源目录 # dst_dir: 目标目录 # reserve_src: 是否保留源数据 # override: 是否覆盖目标目录中的文件 ''' def MergeDir(src_root, dst_root, reserve_src = True , override = True ):
if ( not os.path.exists(src_root)) or ( not os.path.exists(dst_root)): #目录不存在
raise FileNotFoundError
for parent, dirnames, filenames in os.walk(src_root):
for filename in filenames:
src_file = os.path.join(parent, filename)
dst_file = os.path.join(dst_root, src_file[ len (src_root) + 1 :])
if os.path.exists(dst_file) and ( not override): #如果目标文件存在且不能被覆盖
continue
dst_dir = os.path.dirname(dst_file)
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
if reserve_src : #保留源数据
shutil.copyfile(src_file, dst_file) #会覆盖目标文件
else :
shutil.move(src_file, dst_file)
if not reserve_src:
shutil.rmtree(src_root) #删除源根目录
|
相关链接:
*** walker ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1936982如需转载请自行联系原作者
RQSLT