- 主题:用subprocess.run()/popen()等等执行shell命令, 能不结束, 继续
有多条shell命令要执行, 想用python创建一个shell进程, 一条一条执行
不想用&&合并成一条, 一个是因为命令有点长, 一个是中间还要做一些判断
subprocess.run()和subprocess.popen()都是执行完shell进程就结束了, 有没有方法创建一个shell进程, 连续执行, 根据反馈stdout和stderr送新的命令, 最后全部执行完再给信号结束?
我知道这可以用sh脚本了, 但python毕竟更方便. 谢谢!
--
FROM 122.96.47.*
你这么做的目的是什么
【 在 Machael 的大作中提到: 】
: 有多条shell命令要执行, 想用python创建一个shell进程, 一条一条执行
: 不想用&&合并成一条, 一个是因为命令有点长, 一个是中间还要做一些判断
: subprocess.run()和subprocess.popen()都是执行完shell进程就结束了, 有没有方法创建一个shell进程, 连续执行, 根据反馈stdout和stderr送新的命令, 最后全部执行完再给信号结束?
: 我知道这可以用sh脚本了, 但python毕竟更方便. 谢谢!
--
FROM 27.38.197.*
有什么意义呢?
要知道 shell 大多数时候都是靠 fork 进程来完成工作的。
【 在 ToSimplicity 的大作中提到: 】
: 把subprocess当成服务,做完事情不收工,一直等待,直到收到下班的信号
: 要做的事情排成队
--
FROM 27.38.197.*
#coding:utf-8
import time
import os
import datetime
import subprocess
def live_video():
file_name = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S.mp4') # 开启录屏
live_video = subprocess.Popen('ffmpeg -f gdigrab -i desktop -vcodec libx264 -pix_fmt yuv420p {} -y'.format(file_name),shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
time.sleep(10) # 录制10秒
live_video.stdin.write('q'.encode("GBK")) # 发送命令,停止录屏
live_video.communicate() # 发送数据到标准输入
live_video()
【 在 Machael 的大作中提到: 】
: 有多条shell命令要执行, 想用python创建一个shell进程, 一条一条执行
: 不想用&&合并成一条, 一个是因为命令有点长, 一个是中间还要做一些判断
: subprocess.run()和subprocess.popen()都是执行完shell进程就结束了, 有没有方法创建一个shell进程, 连续执行, 根据反馈stdout和stderr送新的命令, 最后全部执行完再给信号结束?
: ...................
--
FROM 119.131.204.*
cd到一个目录, 执行N多条"cp -r --parents"的目录选择复制
后者的cp命令必须在特定目录中执行, 又要执行N多条, 合成一条命令"cd xxx && cp ... && cp ... && cp ..."感觉不好
用一系列的
subprocess.run( "cd xxx && cp ... ")
subprocess.run( "cd xxx && cp ... ")
subprocess.run( "cd xxx && cp ... ")
感觉也不好
【 在 flw 的大作中提到: 】
: 你这么做的目的是什么
:
--
FROM 124.71.94.*
要好看的话,把需要cp的文件和目录做成一个list,用这个list生成一条命令,再subprocess.run
--
FROM 59.37.133.*
用 Python 的 cp 不要用 shell 的。
【 在 Machael 的大作中提到: 】
: cd到一个目录, 执行N多条"cp -r --parents"的目录选择复制
: 后者的cp命令必须在特定目录中执行, 又要执行N多条, 合成一条命令"cd xxx && cp ... && cp ... && cp ..."感觉不好
: 用一系列的
: subprocess.run( "cd xxx && cp ... ")
: subprocess.run( "cd xxx && cp ... ")
: subprocess.run( "cd xxx && cp ... ")
: 感觉也不好
--
修改:flw FROM 163.125.197.*
FROM 163.125.197.*
看了一下subprocess.popen()有入参可以记录命令的输出啊
【 在 Machael 的大作中提到: 】
: 有多条shell命令要执行, 想用python创建一个shell进程, 一条一条执行
: 不想用&&合并成一条, 一个是因为命令有点长, 一个是中间还要做一些判断
: subprocess.run()和subprocess.popen()都是执行完shell进程就结束了, 有没有方法创建一个shell进程, 连续执行, 根据反馈stdout和stderr送新的命令, 最后全部执行完再给信号结束?
: ...................
--
FROM 223.104.39.*
https://www.jb51.net/article/142787.htm参考一下最后一部分
【 在 Machael 的大作中提到: 】
: 有多条shell命令要执行, 想用python创建一个shell进程, 一条一条执行
: 不想用&&合并成一条, 一个是因为命令有点长, 一个是中间还要做一些判断
: subprocess.run()和subprocess.popen()都是执行完shell进程就结束了, 有没有方法创建一个shell进程, 连续执行, 根据反馈stdout和stderr送新的命令, 最后全部执行完再给信号结束?
: ...................
--
FROM 223.104.39.*
popen2开一个bash,然后一行行喂命令。根据命令的输出决定下一次的输入。
--
FROM 222.67.194.*