Python IOError:来自递归目录调用的[Errno 2]

时间:2014-07-07 20:06:57

标签: python file-io io directory subdirectory

下面的代码是我正在编写的程序的一部分,它在每个.py,.sh上运行一个方法。或目录及其文件夹中的.pl文件。

for root, subs, files in os.walk("."):
    for a in files:
        if a.endswith('.py') or a.endswith('.sh') or a.endswith('.pl'):
            scriptFile = open(a, 'r')
            writer(writeFile, scriptFile)
            scriptFile.close()
        else:
            continue

编写程序时,它在我编写的目录树中工作,但当我将它移动到另一个文件夹尝试它时,我收到此错误消息:

Traceback (most recent call last):
File "versionTEST.py", line 75, in <module>
scriptFile = open(a, 'r')
IOError: [Errno 2] No such file or directory: 'enabledLogSources.sh'

我知道一些奇怪的事情正在发生,因为文件肯定存在......

2 个答案:

答案 0 :(得分:1)

您需要将根目录添加到文件名

scriptFile = open(root + '/' + a, 'r')

答案 1 :(得分:1)

文件仅包含文件名,而不包含整个路径。可以通过加入文件名和根目录来获取文件的路径:

scriptFile = open(os.path.join(root, a), "r")

你可能想看看 https://docs.python.org/2/library/os.html#os.walk