运行 os.walk 中间另一个目录中的一个程序
running a program in another directory in the middle of os.walk
我正在使用 os.walk 遍历目录 (dir1)。当我在某些目录中时,我将文件移动到解析器程序所在的不同目录 (dir2)。我正在尝试 运行 dir2 中的解析器程序而不中断对其他目录的遍历。
我目前正在尝试这个:
subprocess.call("python3 parser_program", cwd=parser_location)
在我的演练函数中的适当位置。但是,我收到以下错误:
FileNotFoundError: [Errno 2] No such file or directory: 'python3 parserprogram.py'
最终,运行ning 解析器程序将需要一系列命令来调用 Java 程序;我只是在排除故障时使用简化的 python 程序作为替代。我认为我的问题是我没有从 subprocess.call 函数中正确调用参数,但我无法对文档进行正面或反面的说明。最初我使用 os.chdir 从一个目录移动到另一个目录并返回,并且工作正常,直到它中断了 os.walk 到下一个目录。我如何 运行 一系列命令来调用另一个目录中的文件而不中断我的 os.walk 通过我的原始目录?谢谢
如 subprocess.run()
documentation 中的示例所示,run()
或 call()
的参数需要在列表中:
subprocess.call(['python3', 'parser_program'], cwd=parser_location)
但是,如果您正在使用 shell=True
,即通过 shell 传递它,您可以将参数作为单个字符串传递,就像您正在做的那样:
subprocess.call("python3 parser_program", shell=True, cwd=parser_location)
不过,除非您确实需要 shell 功能,否则不建议使用 shell=True
。
此外,如果您使用的是 Python 3.5+,subprocess.run()
是用于大多数调用的更好的函数。
我正在使用 os.walk 遍历目录 (dir1)。当我在某些目录中时,我将文件移动到解析器程序所在的不同目录 (dir2)。我正在尝试 运行 dir2 中的解析器程序而不中断对其他目录的遍历。
我目前正在尝试这个:
subprocess.call("python3 parser_program", cwd=parser_location)
在我的演练函数中的适当位置。但是,我收到以下错误:
FileNotFoundError: [Errno 2] No such file or directory: 'python3 parserprogram.py'
最终,运行ning 解析器程序将需要一系列命令来调用 Java 程序;我只是在排除故障时使用简化的 python 程序作为替代。我认为我的问题是我没有从 subprocess.call 函数中正确调用参数,但我无法对文档进行正面或反面的说明。最初我使用 os.chdir 从一个目录移动到另一个目录并返回,并且工作正常,直到它中断了 os.walk 到下一个目录。我如何 运行 一系列命令来调用另一个目录中的文件而不中断我的 os.walk 通过我的原始目录?谢谢
如 subprocess.run()
documentation 中的示例所示,run()
或 call()
的参数需要在列表中:
subprocess.call(['python3', 'parser_program'], cwd=parser_location)
但是,如果您正在使用 shell=True
,即通过 shell 传递它,您可以将参数作为单个字符串传递,就像您正在做的那样:
subprocess.call("python3 parser_program", shell=True, cwd=parser_location)
不过,除非您确实需要 shell 功能,否则不建议使用 shell=True
。
此外,如果您使用的是 Python 3.5+,subprocess.run()
是用于大多数调用的更好的函数。