在 Python 的字典中调用明确的文件夹名称和值



我想编写函数,将一个根文件夹的结构和内容复制到另一个根文件夹(已经包含初始文件夹中的大部分文件,函数必须比较文件和目录,如果目标文件夹中不存在,则必须复制(。文件夹的名称是 dict.values((。

def copy_tran(reg_dir):
z_folders = os.listdir(reg_dir)
png_folder = r'C:UsersteiDesktoptemp'
png_subfolders = os.listdir(png_folder)
for dir in z_folders:
for pngdir in png_subfolders:
path_dir2 = os.path.join(png_folder, pngdir) 
path_dir = os.path.join(reg_dir, dir)
transp_basename = os.path.basename(path_dir)[4:] 
png_basename = os.path.basename(path_dir2)[4:] 
if transp_basename == png_basename:
for region in dict.values():
if not os.path.exists(png_folder + '\' + 'reg_' + ('%s' % (region))):
os.mkdir(png_folder + '\' + 'reg_' + ('%s' % (region)))
list_zooms = ['8', '9', '10', '11']                   
for zoom in list_zooms:
if not os.path.exists(png_folder + '\' + 'reg_' + ('%s' % (region)) + '\' + (
'%s' % (zoom))):
os.mkdir(png_folder + '\' + 'reg_' + ('%s' % (region)) + '\' + ('%s' % (zoom)))
x_path = os.path.join(path_dir, zoom)
list_x = os.listdir(x_path)
for y in list_x:
y_path = os.path.join(x_path, y)
if not os.path.exists(png_folder + '\' + 'reg_' + ('%s' % (region)) + '\' + (
'%s' % (zoom)) + '\' + y):
os.mkdir(png_folder + '\' + 'reg_' + ('%s' % (region)) + '\' + ('%s' % (zoom)) + '\' + y)

我的代码(图像(在这里(调试(

问题是,在比较文件夹名称时,python 在根文件夹 (reg_CENTRSIB_NORTH( 中随机(如我所见(文件夹,尽管在列表(第 2 行(中这是第二个元素。因此,函数创建错误的文件夹(在目标文件夹中reg_CENTER函数从文件夹reg_CENTRSIB_NORTH创建子文件夹(。 我需要用什么方式重写我的代码,以便它调用同名的文件夹(即dict.values(((?我很困惑,有什么想法吗?

根据shutil.copy2尝试这个简单的问题解决方案

def copydir(src, dst, symlinks=False, ignore=None):
if not os.path.exists(dst):
os.makedirs(dst)
for item in os.listdir(src):
s = os.path.join(src, item)
d = os.path.join(dst, item)
if os.path.isdir(s):
copydir(s, d, symlinks, ignore)
else:
if not os.path.exists(d) or os.stat(s).st_mtime - os.stat(d).st_mtime > 1:
shutil.copy2(s, d)

这是一个递归实现:

  1. 检查目标文件夹是否存在,如果没有创建它
  2. 循环访问源文件夹的每个元素
  3. 如果是一个文件夹,调用它上面的函数和 GOTO 1
  4. 如果是文件,请检查它是否存在以及是否被修改:基于此副本

这应该可以帮助您复制未保留或已修改的内容

最新更新