我正在尝试使用子进程替换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文件作为目录打开,当它在命令行上没有做同样的事情时?
答案 0 :(得分:0)
也许subprocess无法找到文件/目录。您确定文件存在且文件路径不包含任何特殊字符(例如〜/)吗?
否则尝试使用参数shell=True
:
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)