繁体   English   中英

重命名多个子文件夹以匹配父文件夹的名称

[英]Renaming multiple sub folders to match the parent folder's name

我是python初学者,但是有一些基本经验,我需要有人帮助我使用os模块根据其父文件夹重命名子文件夹。 过去一周,我一直在寻找答案,但没有获得任何成功。 我假设我需要使用os.walk方法来执行此操作。

这是我的文件夹结构:

  • C:\\ data \\ test \\
    • C:\\ data \\ test \\ map1
      • C:\\ data \\ test \\ map1 \\ 1617151
    • C:\\ data \\ test \\ map2
      • C:\\ data \\ test \\ map2 \\ 181719
    • C:\\ data \\ test \\ map3
      • C:\\ data \\ test \\ map3 \\ 182726
    • C:\\ data \\ test \\ map4
      • C:\\ data \\ test \\ map4 \\ 894932

我需要结果看起来像这样。

  • C:\\ data \\ test \\
    • C:\\ data \\ test \\ map1
      • C:\\ data \\ test \\ map1 \\ map1
    • C:\\ data \\ test \\ map2
      • C:\\ data \\ test \\ map2 \\ map2
    • C:\\ data \\ test \\ map3
      • C:\\ data \\ test \\ map3 \\ map3
    • C:\\ data \\ test \\ map4
      • C:\\ data \\ test \\ map4 \\ map4

有人可以帮忙吗?

python 2.7:

import os

os.chdir("C:\data\test\") # go to dir
sub_dirs = os.walk('.').next()[1] # get list of subdirs
for sub_dir in sub_dirs:
    sub_sub_dir = os.walk('.').next[1] # get sub-subdir
    os.rmdir(sub_sub_dir) # remove sub-subdir
    os.makedirs(sub_dir + '\bla') # make new sub-subdir named subdir\bla

python 3+:

import os

os.chdir("C:\data\test\")
sub_dirs=next(os.walk('.'))[1] 
for sub_dir in sub_dirs:
    sub_sub_dir = next(os.walk('.'))[1]
    os.rmdir(sub_sub_dir)
    os.makedirs(sub_dir + '\bla')

未经测试,但应该这样做。

您可以使用此衬板获得所有文件的列表及其相应的文件夹位置:

here = '.' # Current location
files = [(root, files) for root, dirs, files in os.walk(here) if (not dirs and files)]

对于给定的文件夹结构,它将返回:

[
  ('C:\data\test\map1', ['1617151']),
  ...
]

现在,您可以遍历此列表并重命名文件( https://docs.python.org/3/library/os.html#os.rename )。 您可以通过拆分根字符串( root.split('\\')[-1] )获得父文件夹的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM