首页 > 解决方案 > 在 Python 中操作目录的最简单方法?

问题描述

我想要一个程序来帮助清理一堆文件的标题和结构,以便它们的格式适合我的媒体中心程序。我写了一个程序来清理父文件夹的名称,因为我想要“名称(年份)”。我在清理子文件时遇到了麻烦。这是我拥有的基本伪代码:

Find all folders in given directory
Open each folder and copy or move files in child folders to main folder
Sort files by size
Rename the largest file the same name as the parent directory

Search for .srt files
if no .srt files delete all but largest file
if one .srt file found rename it same name as parent directory + .eng.srt
if multiple .srt files found search for "english" or "eng"
if one matching file found rename it same name as parent directory + .eng.srt
if multiple english or eng files found pick one without "SDH" and rename as above

Delete all files except renamed largest file and renamed .srt if found

我使用 os.rename() 重命名父目录,但管理子文件让我感到困惑。os.walk 似乎被推荐,但它一点也不直观。如果有这样的事情,我如何将目录作为对象管理?

标签: pythonpython-3.xdirectorydirectory-structuresubdirectory

解决方案


假设,文件的重命名等于标记它以保留它(您的伪代码需要稍作更改):

from os import listdir, remove
from os.path import isfile, join

mainpath = "/tmp/"

renamed_files = []

每次重命名文件时,将其添加到“待保存列表”中:

renamed_files.append(fname)

到底:

onlyfiles = [f for f in listdir(mainpath) if isfile(join(mainpath, f))]

for fname in onlyfiles:
   if mainpath+fname not in renamed_files:
       remove(mainpath+fname) # os.remove()

推荐阅读