我的脚本:
decimal.TryParse()
此脚本(逐行)将在ipython中运行,重命名并重新定位文件而不会出现问题。 当用sublimetext或textedit编写脚本并进行保存时,它不会引发任何错误,但是什么也不做。我正在使用macOS mojave。
答案 0 :(得分:1)
问题是您给函数指定了名称rename
,但是在函数内部您还试图使用名称rename
来调用os.rename
。结果是os.rename
从未被调用。相反,您的函数以旧文件名和新文件名作为参数对其自身进行递归调用。
该递归调用不执行任何操作,因为walk(source)
传递文件名时不返回任何内容。最终结果是一个程序,该程序可以正确地遍历旧目录树,但从不对它在该树中找到的文件进行任何操作。
要解决此问题,请给您的函数一个不与os.rename
冲突的名称。也许像rename_in_tree
。或者,导入名称为os.rename
(rename
以外的名称的from os import rename as os_rename
,然后从函数内部通过新名称进行调用。
我不知道这在ipython
中是如何工作的。 REPL处理程序有时会在命名范围内做一些奇怪的事情,但是奇怪的是,它将以某种方式调用os.rename
而不是对函数进行递归调用。