python子进程调用失败,而同一命令行调用工作正常

时间:2014-06-27 14:39:52

标签: python subprocess

我正在尝试使用子进程替换Python脚本的命令行调用:

path_to_executable = r'c:\UK\app\Debug\lll.exe'
x = subprocess.call([path_to_executable, args])

args是一个如下所示的字符串:

-unemp Base -rate Base -scen_name Base -print_progress 0 -rate_date 1 -hpa Base -dealpath C:\data\ -nthread 4 -deallist C:\config\all.txt -outdir  c:\outdir\Base

从命令行运行时调用正在运行,但是在子进程中使用相同的参数失败并出现以下错误:

FileIOException(Unable to open directory C:/.../hist.csv)

(csv文件存在 - 但它是一个文件,而不是目录。)

我的问题: 1.如何通过命令行而不是子进程工作? 2.为什么它可能尝试将csv文件作为目录打开,当它在命令行上没有做同样的事情时?

1 个答案:

答案 0 :(得分:0)

也许subprocess无法找到文件/目录。您确定文件存在且文件路径不包含任何特殊字符(例如〜/)吗?

否则尝试使用参数shell=True

来自子流程doc

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)