【发布时间】:2016-04-22 22:44:18
【问题描述】:
我正在尝试编写一个简单的脚本来检查文件名称中是否包含数字,如果有则删除它们。这是我的代码:
import os
directory = raw_input("Enter a path string: ")
print "This will now delete all numbers from the files in %s." %directory
for filename in os.listdir(directory):
print filename
for s in filename:
if s.isdigit():
print filename
path = os.path.join(directory, filename)
print path
target = os.path.join(directory, filename.replace(s, ""))
print target
os.rename(path, target)
print "Done."
当我运行它时,我收到以下错误:
Traceback (most recent call last):
File "EditFilename.py", line 15, in <module>
os.rename(path, target)
NameError: name 'path' is not defined
这很奇怪,因为 path 已明确定义。如果我在 for 循环上方将path 定义为path = "Nothing",则会收到此错误:
File "EditFilename.py", line 16, in <module>
os.rename(path, target)
OSError: [Errno 2] No such file or directory
我正在关注this 链接中明显有效的内容,但我无法让我的代码正常工作。似乎os.rename(path, target) 行在path = os.path.join(directory, filename) 行之前执行!
提前感谢您的帮助,经过四个小时的谷歌搜索,我不知道该怎么办。
【问题讨论】:
-
您是否 100% 确定您的缩进是正确的?也许
rename行根本不在if块内。 -
您得到的
NameError可能意味着您在脚本运行之间没有正确地重新启动Python。您在此处发布的代码不会抛出NameError,不会。 -
查看问题的来源,您似乎在混合制表符和空格。 不要那样做!
-
不是一个直接的答案,但你为什么不使用正则表达式(
re)呢? pastebin.com/c81WtXP0 -
我不知道存在这样的模块。感谢您引起我的注意,我仍在阅读它,但看起来它可能会进一步简化事情。