import os
import time
def readAllFiles(dirname):
"""获取指定目录的所有内容;"""
all_files = []
# 1. 盘顿目录是否存在?
if os.path.exists(dirname):
# 依次遍历目录里面的所有内容;
for root, dirs, files in os.walk(dirname):
for file in files:
# 将文件的路径加入到列表中;
all_files.append(os.path.join(root, file))
return all_files
else:
print("%s 不存在" % (dirname))
print(readAllFiles('/home/kiosk/Flask_Movie_Site-master'))
def copyFileTask(oldDir, newDir, file):
"""备份文件和目录"""
#把字符串中的 old(旧字符串) 替换成 new(新字符串)
newFile = file.replace(oldDir, newDir)
#print(newFile)
# 假设文件所在的目录不存在, 先创建;
newFileDirName = os.path.dirname(newFile)
try:
if not os.path.exists(newFileDirName):
os.makedirs(newFileDirName)
fr = open(file, 'rb')
fw = open(file.replace(oldDir, newDir), 'wb')
content = fr.read()
fw.write(content)
fr.close()
fw.close()
except Exception as e:
print(e)
else:
# print("backup %s success" % (file))
pass
#
#
def main():
# oldDir = input("请输入备份的目录:")
oldDir = '/home/kiosk/Flask_Movie_Site-master'
if os.path.exists(oldDir):
try:
date = os.popen('date +%F').read().strip()
newDir = oldDir + '-backup-' + date
os.makedirs(newDir)
except FileExistsError as e:
print(e)
else:
print("备份目录%s已经创建" % (newDir))
all_back_files = readAllFiles(oldDir)
for file in all_back_files:
copyFileTask(oldDir, newDir, file)
##多进程copy
# from concurrent.futures import ThreadPoolExecutor
# pool = ThreadPoolExecutor(max_workers=4)
# all_back_files = readAllFiles(oldDir)
#
# for file in all_back_files:
# pool.submit(copyFileTask, oldDir, newDir, file)
else:
print("error!")
if __name__ == '__main__':
start = time.time()
main()
end = time.time()
print("run %s" % (end - start))
1.非多进程:
2.多进程:
##多进程copy
from concurrent.futures import ThreadPoolExecutor
pool = ThreadPoolExecutor(max_workers=4)
all_back_files = readAllFiles(oldDir)
for file in all_back_files:
pool.submit(copyFileTask, oldDir, newDir, file)
3.copy好的文件: