|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 |
|