【发布时间】:2020-02-25 21:02:36
【问题描述】:
我在下面找不到此问题代码的解决方案:
import subprocess
subprocess.call(['./eu_presun.sh'])
shell 脚本与 main.py 在同一个目录中我将使用 python 然后我想使用这个 shell 脚本 我收到了这个错误。
Traceback (most recent call last):
File "~/_main.py", line 304, in <module>
subprocess.call(['sh eu_presun.sh'])
File "/usr/lib/python3.8/subprocess.py", line 340, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: './eu_presun.sh'
【问题讨论】:
-
补充:python脚本完美运行,shell脚本也完美运行
-rwxr-xr-x 1 ################### eu_presun.sh -
它可能会单独工作当你从 shell 调用它时,但是如果它在没有 Python 的 shell 的情况下失败,它也会在很多其他情况下失败。解决真正的问题,不要只是通过显式启动 shell 来解决它。
-
举个例子,尝试运行
echo . | xargs -n 1 ./eu_presun.sh——如果有问题意味着操作系统不能成功地将eu_presun.sh作为可执行文件运行,那也会失败。 (如果它没有失败,那么这告诉我们我们的问题只是关于您在 Python 中的os.getcwd()不是 shell 脚本实际所在的目录)。 -
我不明白这种追溯是如何实现的。为什么它说
~/_main.py而不是/home/you/_main.py?怎么从第三行的'sh eu_presun.sh'到最后一行的'./eu_presun.sh'?
标签: python-3.x shell subprocess