“Python云存储备份”的版本间的差异
来自CloudWiki
第55行: | 第55行: | ||
dirs.append(path) | dirs.append(path) | ||
listDirWidthFirst('.')</nowiki> | listDirWidthFirst('.')</nowiki> | ||
+ | |||
+ | |||
+ | ===复制云端目录(未完)=== | ||
+ | <nowiki>from os import listdir | ||
+ | from os.path import join, isfile, isdir | ||
+ | |||
+ | dirs= [] | ||
+ | def CopyDirWidthFirst(old_dir,new_dir): | ||
+ | '''广度优先遍历文件夹''' | ||
+ | #使用列表模拟双端队列,效率稍微受影响,不过关系不大 | ||
+ | global dirs | ||
+ | dirs = [old_dir]#这个old_dir就是列表的第一个元素 | ||
+ | #如果还有没遍历过的文件夹,继续循环 | ||
+ | while dirs: | ||
+ | #遍历还没遍历过的第一项 | ||
+ | current = dirs.pop(0) | ||
+ | #遍历该文件夹,如果是文件就直接输出显示 | ||
+ | #如果是文件夹,输出显示后,标记为待遍历项 | ||
+ | for subPath in listdir(current): | ||
+ | print(subPath) | ||
+ | >>> os.path.split(path) | ||
+ | ('D:\\teaching\\自动化运维\\练习', '7.1.py') | ||
+ | current.split("teaching\\") | ||
+ | path = join(current, subPath) | ||
+ | if isdir(path): | ||
+ | #print(path) | ||
+ | dirs.append(path) | ||
+ | |||
+ | |||
+ | CopyDirWidthFirst(r'D:\teaching\自动化运维\练习','')</nowiki> |
2020年3月30日 (一) 02:56的版本
比较左右两侧文件
import filecmp import os left = r"D:\teaching\人工智能" # 定义左目录 right = r"E:\20200311\teaching\人工智能" #定义右目录 #比较目录 dirobj = filecmp.dircmp(left, right, ['cmp.py']) #目录比较,忽略test.py文件 dirobj.report() print("left_only:") print(dirobj.left_only) # 只在左目录中的文件或目录
复制文件
import shutil for i in dirobj.left_only: left_file=os.path.realpath(i) right_file=os.path.join(right,i) print("左侧发现新文件/目录: "+i) print(left_file) print(right_file) s=input("是否复制?y/n") if s=='y': print("开始复制中...") shutil.copyfile(left_file,right_file) print("复制完毕"+right_file)
广度优先遍历目录
from os import listdir from os.path import join, isfile, isdir def listDirWidthFirst(directory): '''广度优先遍历文件夹''' #使用列表模拟双端队列,效率稍微受影响,不过关系不大 dirs = [directory]#这个directory就是列表的第一个元素 #如果还有没遍历过的文件夹,继续循环 while dirs: #遍历还没遍历过的第一项 current = dirs.pop(0) #遍历该文件夹,如果是文件就直接输出显示 #如果是文件夹,输出显示后,标记为待遍历项 for subPath in listdir(current): path = join(current, subPath) if isfile(path): print(path) elif isdir(path): print(path) dirs.append(path) listDirWidthFirst('.')
复制云端目录(未完)
from os import listdir from os.path import join, isfile, isdir dirs= [] def CopyDirWidthFirst(old_dir,new_dir): '''广度优先遍历文件夹''' #使用列表模拟双端队列,效率稍微受影响,不过关系不大 global dirs dirs = [old_dir]#这个old_dir就是列表的第一个元素 #如果还有没遍历过的文件夹,继续循环 while dirs: #遍历还没遍历过的第一项 current = dirs.pop(0) #遍历该文件夹,如果是文件就直接输出显示 #如果是文件夹,输出显示后,标记为待遍历项 for subPath in listdir(current): print(subPath) >>> os.path.split(path) ('D:\\teaching\\自动化运维\\练习', '7.1.py') current.split("teaching\\") path = join(current, subPath) if isdir(path): #print(path) dirs.append(path) CopyDirWidthFirst(r'D:\teaching\自动化运维\练习','')