【发布时间】:2020-07-26 18:52:15
【问题描述】:
我有一段代码,其中大部分是从这里的另一个问题中得到的。在做了一些调整之后,它似乎不起作用。 目的很简单:我有一个包含许多文件的目录,所有文件都包含垃圾词/字符,需要用不同的东西替换。
我有 2 个包含这些词的列表。代码如下所示:
import os, string
rootdir = r'C:\Users\me\Downloads\Documents\Folder'
lst = ["this that", "This.that", "THIS.THAT", "this_that", "This.That"]
lst2 = ["_","__","___","."]
for filename in os.listdir(rootdir):
if any(i in filename for i in lst):
filepath = os.path.join(rootdir, filename)
newfilepath = os.path.join(rootdir, filename.replace(i, ""))
os.rename(filepath, newfilepath)
if any(i in filename for i in lst2):
filepath = os.path.join(rootdir, filename)
newfilepath = os.path.join(rootdir, filename.replace(i, " "))
os.rename(filepath, newfilepath)
但是当我运行它时,错误是NameError: name 'i' is not defined
不知道为什么会这样,我应该被定义为“出现在列表中的文件名的一部分”。至少我是这么认为的。尝试以不同的方式定义它,但没有成功。
任何想法如何解决这个问题?谢谢
【问题讨论】:
-
any(i in filename for i in lst):中的i仅在该生成器内具有作用域 -
filename.replace(i, "")) this i 不可用/声明为 i in any() is not available outside