python脚本在python解释器中执行,失败为.py文件

时间:2019-02-21 20:48:27

标签: python-3.x macos-mojave

我的脚本:

decimal.TryParse()

此脚本(逐行)将在ipython中运行,重命名并重新定位文件而不会出现问题。 当用sublimetext或textedit编写脚本并进行保存时,它不会引发任何错误,但是什么也不做。我正在使用macOS mojave。

1 个答案:

答案 0 :(得分:1)

问题是您给函数指定了名称rename,但是在函数内部您还试图使用名称rename来调用os.rename。结果是os.rename从未被调用。相反,您的函数以旧文件名和新文件名作为参数对其自身进行递归调用。

该递归调用不执行任何操作,因为walk(source)传递文件名时不返回任何内容。最终结果是一个程序,该程序可以正确地遍历旧目录树,但从不对它在该树中找到的文件进行任何操作。

要解决此问题,请给您的函数一个不与os.rename冲突的名称。也许像rename_in_tree。或者,导入名称为os.renamerename以外的名称的from os import rename as os_rename,然后从函数内部通过新名称进行调用。

我不知道这在ipython中是如何工作的。 REPL处理程序有时会在命名范围内做一些奇怪的事情,但是奇怪的是,它将以某种方式调用os.rename而不是对函数进行递归调用。