[英]More Pythonistic: prefix subdirectory with parent folder name?
我正在整理文件夾。 給定文件結構:
a/1
a/2
a/3
a/3/3_1
a/3/3_2
我只想在不包含任何子目錄 (即輸出)的情況下,以父文件夾為前綴對第一級文件夾進行重命名:
a/a-1
a/a-2
a/3
a/3/3_1
a/3/3_2
我有以下代碼可以做到這一點:
root_dir = "./"
parent_path = os.path.abspath(root_dir)
parent_folder_name = os.path.abspath(root_dir).split('/')[-1]
dirs = []
for entry in os.listdir(root_dir):
absolute_path = parent_path + "/" + entry
if os.path.isdir(absolute_path) and entry[0] != ".":
dirs.append(absolute_path)
for first_level_dir in dirs:
# travers each directory in root directory
skip_dir = False
subdirs = os.walk(first_level_dir).next()[1]
if len(subdirs) == 0
volume_folder_name = first_level_dir.split("/")[-1]
new_dir_name = (parent_path + "/" + parent_folder_name + "-" + volume_folder_name)
os.rename(first_level_dir, new_dir_name)
代碼有效,但是看起來很冗長。 有沒有更Python的方式來做到這一點?
為了使代碼更具可讀性,請提取has_subdir()
函數:
from pathlib import Path
def has_subdir(path):
return any(p.is_dir() for p in path.iterdir())
root = Path().resolve()
dirs = [p for p in root.iterdir() if p.is_dir() and not has_subdir(p)]
for oldpath in dirs:
newname = '{}-{}'.format(oldpath.parent.name, oldpath.name)
oldpath.rename(oldpath.with_name(newname))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.