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

2024-05-23 19:08:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在模块中发现了一些问题,但更常见的问题似乎是正确地获取参数列表,我认为我(最终)已经处理好了

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

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。有什么建议吗?


根据问题编辑

我没有永久地设置路径,但是fits2ndf是我使用初始化的程序包的一部分

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

并且通常从任何目录中工作,而不指定完整路径。


Tags: 文件inpy路径libusrdirline
2条回答

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

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

一定要指向正确的方向。

which fits2ndf将显示fits2ndf的路径。

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

例如:

~$ which mv
/bin/mv

我的python代码:

import subprocess

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

相关问题 更多 >