从Python执行bash文件

问题描述 投票:0回答:2

我想从Python中执行shell脚本文件。我目前正在使用Envoy这样做:

envoy.run('./scripts.sh')

但它抛出了No such file or directory错误。

我想知道,上面的文件执行的路径是什么?如何使上述脚本运行?它与Python脚本位于同一目录中。

python bash shell subprocess python-envoy
2个回答
4
投票

该程序在os.getcwd()报告的当前工作目录中执行。对于命令行程序,它通常是运行程序时所在的目录。要在与python脚本相同的目录中运行命令,请使用__file__变量来确定您的位置:

import os
import envoy

my_path = os.path.dirname(os.path.abspath(__file__))
envoy.run('./scripts.sh', cwd=my_path)

1
投票

您收到的错误可能不一定来自python本身,但您的bash脚本因为您发布的错误也可以从bash本身返回。

-bash: ./asdf: No such file or directory

你的shell脚本是否需要参数?另外,您是否尝试直接执行shell脚本而不是通过python执行?

我建议的另一件事是使用环境bash而不是完整路径,因为由于linux OS设计的差异,这通常更适合于可移植性。

#!/usr/bin/env bash
© www.soinside.com 2019 - 2024. All rights reserved.