鱼C论坛

 找回密码
 立即注册
查看: 1261|回复: 1

求助有关subprocess.Poen()的问题

[复制链接]
发表于 2020-3-15 19:48:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
subprocess.Popen可以用来执行命令,执行单条独立的命令很好用,但是对于执行连续的命令怎么试都没成功,比如,我想用命令先进入一个文件夹,然后再用命令在此文件夹下做删除文件,或者dir等等操作,即第二条或者第三条都是在第一条命令执行后的前提下进行的。我试了用k.stdin.write(...)  '...输的是下一条命令',死活不成功。结果都是只会执行第一条。请问对于需要在一个cmd下连续运行多条命令这种情况用subprocess怎么操作??(PS:cd 或者删文件,dir等等,只是为了举例,真正目的不是为了对文件操作,而是想用subprocess进行cmd的操作, )

例:
# 第一步 用命令进入 r'C:\Users\kk\Desktop\kksubprocess'下的文件夹2,
# 第二步,第三步... 后续的命令就是在此基础上(也就是进入了kksunprocess文件夹后)做删除文件,如删除2.txt, 或者dir等等。
现在的问题是从第二步起就没生效,执行完后2.txt文件还是存在
代码如下(还不能截图@@):

import subprocess

# 第一步准备进入 r'C:\Users\kk\Desktop\kksubprocess'文件夹,
# 后续的命令就是在此基础上(也就是进入了kksunprocess文件夹后)做删除文件,或者dir等等。

# 例如:先进入kksubprocess文件夹下的文件夹2,然后再删除2文件下的2.txt

k=subprocess.Popen('cd 2',shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,
                   stderr=subprocess.PIPE,cwd=r'C:\Users\kk\Desktop\kksubprocess')

out=k.stdout.read()
err=k.stderr.read()

print('1输出是:',out.decode('GBK'))
print('1错误是:',err.decode('GBK'))
print('1返回值是:',k.returncode)
print('======================\n')

k.stdin.write('del 2.txt'.encode())
out=k.stdout.read()
err=k.stderr.read()
print('输出2是:',out.decode('GBK'))
print('错误2是:',err.decode('GBK'))
print('返回值2是:',k.returncode)


===============================输入为===================
G:\Study\projectTest\venv\Scripts\python.exe G:/Study/projectTest/testSubprocess.py
1输出是:
1错误是:
1返回值是: None
======================

输出2是:
错误2是:
返回值2是: None

Process finished with exit code 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-15 19:48:51 | 显示全部楼层
求助,求助,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表