15

我在模块上发现了一些问题,但更常见的问题似乎是让我认为我已经管理的参数列表正确(最终)

我正在尝试运行一个程序,该程序需要在命令行中输入这样的输入,

fits2ndf in out

'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

并且通常在任何目录中工作而无需指定完整路径。

4

2 回答 2

13

which fits2ndf将向您展示fits2ndf 的路径。

之后,您可以编写代码的完整路径,它应该可以工作。

前任:

~$ which mv
/bin/mv

我的python代码:

import subprocess

subprocess.call(["/bin/mv","/tmp/a","/tmp/b"])
于 2012-12-09T11:23:40.767 回答
0

您可能想要删除空间" /media/tom_hdd/Transfer/reference.sdf"

另外,尝试 tp 将所有内容放在一个字符串中,例如"fits2ndf /media/tom_hdd/Transfer/reference.fits /media/tom_hdd/Transfer/reference.sdf"

确保您指向准确的方向。

于 2012-12-09T10:59:40.097 回答