如何从python代码调用shell脚本?
当前回答
import os
import sys
假设test.sh是您想要执行的shell脚本
os.system("sh test.sh")
其他回答
Subprocess模块是启动子进程的好模块。 你可以使用它来调用shell命令,如下所示:
subprocess.call(["ls","-l"]);
#basic syntax
#subprocess.call(args, *)
你可以在这里看到它的文档。
如果您的脚本是用.sh文件或长字符串编写的,那么您可以使用os。系统模块。调用它相当简单和容易:
import os
os.system("your command here")
# or
os.system('sh file.sh')
该命令将运行脚本一次,直到完成,然后阻塞直到退出。
子流程模块将帮助您解决这个问题。
显而易见的小例子:
>>> import subprocess
>>> subprocess.call(['sh', './test.sh']) # Thanks @Jim Dennis for suggesting the []
0
>>>
其中test.sh是一个简单的shell脚本,0是这次运行的返回值。
我正在运行python 3.5, subprocess.call(['./test.sh'])不适合我。
我给出三个解取决于你对输出的处理。
1 -调用脚本。您将在终端中看到输出。输出是一个数字。
import subprocess
output = subprocess.call(['test.sh'])
2 -调用和转储执行和错误到字符串。除非输出(stdout),否则在终端中看不到执行。Shell=True作为Popen中的参数并不适用于我。
import subprocess
from subprocess import Popen, PIPE
session = subprocess.Popen(['test.sh'], stdout=PIPE, stderr=PIPE)
stdout, stderr = session.communicate()
if stderr:
raise Exception("Error "+str(stderr))
3 -调用脚本,将temp.txt的echo命令转储到temp_file中
import subprocess
temp_file = open("temp.txt",'w')
subprocess.call([executable], stdout=temp_file)
with open("temp.txt",'r') as file:
output = file.read()
print(output)
别忘了看一看doc子流程
有一些方法使用os.popen()(已弃用)或整个子进程模块,但这种方法
import os
os.system(command)
是最简单的方法之一。
如上所述,使用子流程模块。
我是这样使用的:
subprocess.call(["notepad"])
推荐文章
- 如何为python模块的argparse部分编写测试?
- 在python中是否有用于均方根误差(RMSE)的库函数?
- 如何从matplotlib (pyplot。Figure vs matplotlib。figure) (frameon=False matplotlib中有问题)
- django test app error -在创建测试数据库时出现错误:创建数据库的权限被拒绝
- 识别使用pip安装的python包的依赖关系
- 从字符串变量导入模块
- 如何删除Python中的前导空白?
- python中的assertEquals和assertEqual
- 如何保持Python打印不添加换行符或空格?
- 为什么Python的无穷散列中有π的数字?
- Python 3.7数据类中的类继承
- 如何在PyTorch中初始化权重?
- 计数唯一的值在一列熊猫数据框架像在Qlik?
- 使用Pandas将列转换为行
- 从matplotlib中的颜色映射中获取单个颜色