我想使用subprocess.Popen通过python脚本格式化硬盘。 在shell中键入以下命令很好。请注意这个命令!
parted /dev/sdh mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No?
我同意输入Yes并且磁盘格式正确。
在Python子进程中滚动它,Popen以状态码1退出。 我甚至无法在stdin管道中写“是”。
代码如下:
#test1
from subprocess import Popen, PIPE, STDOUT
p = Popen('parted /dev/sdh mklabel gpt', shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
print p.wait()
1
或者,
# test2
p = Popen('parted /dev/sdh mklabel gpt', shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
p.stdin.write('Yes\n')
IOError:[Errno 32]管道损坏
我不确定Popen是否不将此警告视为错误,如果是这种情况,我怎么能改变他的行为呢? 感谢您的任何建议。
答案 0 :(得分:0)
通过在命令中添加-s选项,如下所示(忽略输出),parted退出并成功。
Popen('parted -s /dev/sdh mklabel gpt', shell=True)