我在模块的几个问题上找到了一些解答,但更普遍的问题似乎是正确地获取参数列表,我认为我已经成功解决了这个问题(最终)。
我正在尝试运行一个需要在命令行中输入以下内容的程序,
fits2ndf in out
使用Subprocess,其中'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。有什么建议吗?
回答问题时的编辑:
我尚未永久设置路径,但fits2ndf
是我使用以下命令初始化的程序包的一部分:
% tcsh
% setenv STARLINK_DIR /home/tomq/star-kapuahi
% source $STARLINK_DIR/etc/login
% source $STARLINK_DIR/etc/cshrc
通常情况下,无需指定完整路径即可在任何目录中使用。
fits2ndf
? - Karthik Tfits2ndf
所在的目录是否在你的 $PATH 中,并且 PATH 是否已经导出? - cdarkefits2ndf
的完整路径,就可以了。例如:/home/foo/fits2ndf
。 - denizeren