我想从Python中执行shell脚本文件。我目前正在使用Envoy来做这件事:
envoy.run('./scripts.sh')
但它引发了No such file or directory
错误。
我想知道,上面的文件执行的路径是什么?如何使上述脚本运行?它与Python脚本位于同一目录中。
答案 0 :(得分: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 :(得分:1)
您收到的错误可能不一定来自python本身,但您的bash脚本因为您发布的错误也可以从bash本身返回..
-bash: ./asdf: No such file or directory
你的shell脚本是否需要参数?另外,您是否尝试直接执行shell脚本而不是通过python执行?
我建议的另一件事是使用环境bash而不是完整路径,因为由于linux OS设计的差异,这通常更适合于可移植性。
#!/usr/bin/env bash