【问题标题】:Trying to rename files by iterating over a dictionary with their names尝试通过使用名称迭代字典来重命名文件
【发布时间】:2017-08-08 23:09:54
【问题描述】:
import os

os.chdir('/Users/julianl/Desktop/Rick and Morty Season 1')
names = {'1' : 'Pilot', '2' : 'Lawnmower Dog',  '3' : 'Anatomy Park',  '4' : 'M. Night Shaym-Aliens!',  '5' : 'Meeseeks and Destroy', '6' : "Rick Potion #9", '7' : "Raising Gazorpazorp", '8' : "Rixty Minutes", '9' : "Something Ricked This Way Comes", '10' : "Close Rick-counters of the Rick Kind", '11' : "Ricksy Business"}

i = 0
root = os.getcwd()
for filename in os.listdir('.'):
        for name in names:
        os.rename(os.path.join(root, filename), os.path.join(root, 'Episode {} {}.mkv').format(i, name))

    i += 1

您好,我是 python 程序的新手,我正在尝试通过添加可以在我制作的字典中找到的剧集名称来重命名文件夹中的文件。我需要帮助迭代它并将这些值放在我创建的name 变量中。

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。

标签: python python-3.x loops dictionary file-rename


【解决方案1】:

您想使用剧集名称(我假设是文件名)来访问字典。

由于您想使用名称(而不是编号)来查找剧集名称,因此您应该翻转您的字典键和值:

names = {'1' : 'Pilot', '2' : 'Lawnmower Dog', ... 变为 names = {'Pilot': '1', 'Lawnmower Dog': '2', ...

而不是for name in names:试试:

try:
    name = names[filename]
except KeyError:
    # Filename was not found. Skip
    print("Filename "+filename+" not found")
    continue

这可能不是单词,具体取决于您的文件名的格式。我目前无法从您的问题中看出这一点。

还有if filename.startswith('E'): 看起来不应该在那里。

【讨论】:

  • 当我使用你的方法时,我得到一个 .DS_store 密钥错误。我的视频格式类似于“Episode 1.mkv”
  • 我用过,它说找不到文件。然而目录是正确的并且文件在那里....我使用 os.getcwd() 检查并且我在正确的目录中....
  • @JulianL,对不起,你的字典是另一种方式。由于您使用剧集名称(而不是编号)查找,因此您应该翻转 keysvalues。更新了答案
猜你喜欢
  • 2018-06-12
  • 2021-02-12
  • 2017-04-01
  • 1970-01-01
  • 2018-04-10
  • 2021-04-02
  • 2019-07-10
  • 2013-06-15
  • 1970-01-01
相关资源
最近更新 更多