【问题标题】:Python IOError: [Errno 2] from recursive directory callPython IOError:来自递归目录调用的 [Errno 2]
【发布时间】:2014-08-28 10:14:24
【问题描述】:

下面的代码是我正在编写的程序的一部分,它在每个 .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'

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

【问题讨论】:

  • 你的测试目录有多深? enabledLogSources.sh 从您运行此脚本的目录向下一层?
  • open(os.path.join("{}/{}".format(root,a)),"r")
  • writeFile 来自哪里?
  • @PadraicCunningham 谢谢,我会试一试,它在程序中更高,这是我创建要写入的文件。

标签: python file-io io directory subdirectory


【解决方案1】:

files 只包含文件名,而不是整个路径。文件的路径可以通过连接文件名和根获得:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多