蟒蛇subprocess.call()“没有这样的文件或目录”(python subprocess.

2019-07-04 19:55发布

我发现在模块上的几个问题,但更常见的问题似乎得到我认为我已成功(最终)的参数列表右侧

我试图运行在命令行预计,输入这样的程序,

fits2ndf in out

与“在”被该文件的文件路径被转换和“出”是路径和文件名来保存结果。

因此,使用子流程,

subprocess.call(["fits2ndf","/media/tom_hdd/Transfer/reference.fits","/media/tom_hdd/Transfer/reference.sdf"])

这引起,

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

设置shell=TRUE (我知道是坏的)产生相同的结果。 不知道这是相关的,但我用tcsh。 有什么建议?


编辑在回答问题

我没有永久设置但是PATH fits2ndf是一揽子的方案,我用初始化的一部分

% tcsh
% setenv STARLINK_DIR  /home/tomq/star-kapuahi
% source $STARLINK_DIR/etc/login
% source $STARLINK_DIR/etc/cshrc

并且通常在任何目录内的作品,未经指定的完整路径。

Answer 1:

which fits2ndf会告诉你fits2ndf的路径。

在此之后,你可以写给出完整路径,你的代码,它应该工作。

例如:

~$ which mv
/bin/mv

我的Python代码:

import subprocess

subprocess.call(["/bin/mv","/tmp/a","/tmp/b"])


Answer 2:

你可能想删除的空间" /media/tom_hdd/Transfer/reference.sdf"

另外,尝试TP把一切都放在一个字符串,如"fits2ndf /media/tom_hdd/Transfer/reference.fits /media/tom_hdd/Transfer/reference.sdf"

请确保您指向的确切方向。



文章来源: python subprocess.call() “no such file or directory”