Python的sh模块 - 运行'源'命令

时间:2016-03-25 01:25:49

标签: python

使用python' sh模块时, 我想运行一个'来源'内置命令。

但是我无法运行它,因为sh应该有一个二进制作为参数。

如何使用sh模块运行内置命令?

# source ./test.sh

sh.source('./test.sh') # wrong usage
sh.Command('source') # wrong usage

1 个答案:

答案 0 :(得分:4)

通过Python In [69]: uniques, indices = np.unique(df.index, return_index=True) In [70]: indices Out[70]: array([0, 3, 6, 7]) 模块调用sh -c "source hello"

sh

也就是说,考虑使用sh.sh('-c', 'source test.sh') 代替,其中包含的魔法少得多,因此表现得更具可预测性:

subprocess.Popen()

当数组传递给# ...if hardcoding the script to source in your Python code subprocess.Popen('source ./test.sh', shell=True) # ...otherwise: subprocess.Popen(['source "$@"', './test.sh'], shell=True) 的第一个参数时,第一个参数被视为要运行的源,后续参数在运行期间变为subprocess.Popen$1等。该脚本允许通过$2调用一个字符串文字数组与/bin/sh的组合。

但是:将内容导入shell的目的和目的通常是修改该shell的状态。使用shell=Truesh.sh,shell只持续那个单独的Python函数调用调用,所以没有状态持续到未来的subprocess.Popen()sh调用,这使得任何这些用法都不可能真正实现你手头的目标

你真正想要的东西可能更像是这样:

subprocess

... sh.sh('-c', 'source ./test.sh; do-something-else-here') 取决于do-something-else-here对shell及其环境所做的更改。