'''想要重命名文件,删除数组中的所有坏字符" bad_pattern"。 我首先从坏图案中读取所有字符,然后比较文件名中的字符。 如果它发现任何被替换为" _"当循环结束文件时没有奇怪的字符会被返回以供以后使用。
然后在方法moveFiles()
中,我应该获得预览方法的输出并将其保存在变量newfile
中。
最后我想重命名该文件。
我收到错误:
local variable 'newfile' referenced before assignment
这是我的代码:
file = t#est.txt
bad_pattern= ["ã", "â", "é", "è", ", "ò", "ù", "û", "~", "^", "#"","\s"]
def filename_replacer(file):
for char in bad_pattern:
for char_good in file:
if char_good == char:
newfile = file.replace(char_good, "_")
return newfile
def moveFiles():
files = os.listdir(startDir+"/"+app)
for file in files:
newfile = filename_replacer(file)
try:
os.rename(file,newfile)
except Exception as e:
print(str(e))
答案 0 :(得分:2)
回溯很有帮助,但问题就在这里:
def filename_replacer(file):
for char in bad_pattern:
for char_good in file:
if char_good == char:
# If next line never executes, newfile is undefined for return
newfile = file.replace(char_good, "_")
return newfile
将newfile
更改为file
,它应该可以解决问题。如果没有找到错误的模式,file
将保持不变。
答案 1 :(得分:0)
尝试在try / except语句中移动newfile
变量。我不完全理解,但try
语句发生在您的主函数的不同范围内,因此在try语句之外定义newfile
将不会在其中定义它。
试试这个
def moveFiles():
files = os.listdir(startDir+"/"+app)
for file in files:
try:
newfile = filename_replacer(file)
os.rename(file,newfile)
except Exception as e:
print(str(e))