我想使用 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 退出。我什至无法将“是”写入标准输入管道。
代码如下:
#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 是否不将此警告视为错误,如果是这种情况,我该如何改变他的行为?感谢您的任何建议。