python shell常用命令_使用Python打开Shell环境,运行命令并退出环境

我正在尝试使用python自动化过程.如果我只是在终端机中,工作流程如下所示:

user:> . /path/to/env1.sh

user:> python something.py

user:> exit

user:> . /path/to/env2.sh

user:> python something2.py

user:> exit

等更多的步骤.每个env.sh都会生成一个带有大量环境变量以及当前目录中未设置内容的新脚本.我很确定我需要使用子流程,但是我不确定该如何进行.理想情况下,工作流程应为:打开新的外壳->运行一些命令->退出外壳->根据需要重复.

编辑:似乎需要一些澄清.我了解如何使用subprocess.Popen()和subprocess.call()从调用Python脚本的外壳内调用事物.这不是我所需要的.当调用env.sh时,它会设置大量的环境变量和其他一些相关的内容,然后将您放入一个shell中以运行命令.重要的是要注意env.sh不会终止,直到一种类型运行所需的命令后退出.使用subprocess.call(“ ./ env.sh”,shell = True)打开shell并在此处停止.就像输入命令./env.sh一样,只不过当发出退出命令时,其余的python脚本才起作用.所以:

subprocess.call(". /path/to/env.sh", shell = True)

subprocess.call("python something.py", shell = True)

不做我需要做的事情,也不做:

p = subprocess.Popen(". /path/to/env.sh", shell = True)

subprocess.call("python something.py", shell = True)

p.kill()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,你可以使用内置的`subprocess`模块来运行shell命令,并处理命令的输入和输出。`subprocess`提供了一种强大且灵活的方式来执行系统命令,包括获取命令的输出(stdout)和错误输出(stderr)。 以下是一个简单的例子,展示了如何执行shell命令并接收其输入和输出: ```python import subprocess # 命令及其输入(可选) command = 'echo "Hello from shell!"' input_data = 'Your input here' # 只适用于支持输入的命令,如bash的read -p # 创建子进程 process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) # 如果有输入数据,写入子进程 if input_data: process.stdin.write(input_data.encode()) # 对字符串进行编码,因为子进程需要字节流 process.stdin.flush() # 确保数据被立即发送 # 获取输出和错误信息 stdout, stderr = process.communicate() # 输出是bytes类型,可能需要解码为str output_str = stdout.decode('utf-8') error_str = stderr.decode('utf-8') if stderr else '' print(f"Output: {output_str}") print(f"Error: {error_str}") ``` 在这个例子中,`communicate()`方法会阻塞直到命令完成,返回的是一个包含命令标准输出和标准错误的元组。如果需要交互式地获取命令的输入,可以使用`stdin.write()`方法。 相关问题: 1. `subprocess.Popen`创建了一个什么对象? 2. `stdout=PIPE`和`stdin=PIPE`参数的作用是什么? 3. 如何处理`communicate()`方法返回的输出和错误?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值