shell 子进程.Popen在同一目录中找不到bash文件

bxgwgixi  于 2023-10-23  发布在  Shell
关注(0)|答案(1)|浏览(168)

我正在尝试从Python脚本运行bash脚本。这个bash脚本和python脚本都位于同一个目录中。然而,当我运行Python脚本时,我得到No such file or directory错误。
我的当前目录

xxx@xxx:/home# ls
check.sh sc.py

下面是我尝试运行的代码,sc.py

import subprocess
subprocess.Popen(["check.sh", "ABC"])

我得到以下错误:

xxx@xx:/home# python3 sc.py
Traceback (most recent call last):
  File "sc.py", line 2, in <module>
    subprocess.Popen(["check.sh", "ABC"])
  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'check.sh': 'check.sh'

我做错了什么?

omqzjyyz

omqzjyyz1#

PATH check.sh中没有文件www.example.com。如果你想在 current 工作目录中找到一些东西,在那里找到它。

subprocess.Popen(["./check.sh", "ABC"])

如果你想在与python脚本相同的目录中找到一些东西,导航到与python脚本相同的目录。

import subprocess
from pathlib import Path
subprocess.Popen([str(Path(__file__).parent / "check.sh"), "ABC"])

相关问题