我正在尝试在 Linux 上自动化 fdisk 实用程序,以便使用 Python 3 删除附加磁盘设备(在本例中为 USB /dev/sdb)上的分区。
该脚本应执行以下命令:
1)。sudo fdisk /dev/sdb // 在 /dev/sdb 上执行 fdisk
欢迎使用 fdisk (util-linux 2.29)。更改将仅保留在内存中,直到您决定写入它们。在使用 write 命令之前要小心。
命令(m 寻求帮助):2)。d /dev/sdb // 试图删除 /dev/sdb 分区。
分区号(1-4,默认 4):3)。2 // 分区号 2
到目前为止,这是我的 Python 代码:
proc = subprocess.Popen(["sudo", "fdisk", "/dev/sdb"], stdin=subprocess.PIPE)
proc.communicate(b'd /dev/sdb')
proc.communicate(b'2')
Line1 和 Line2 工作得很好,但是 Line3 给了我以下错误:
Welcome to fdisk (util-linux 2.29).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): Partition number (1-4, default 4): Traceback (most recent call last):
File "./testing.py", line 83, in <module>
proc.communicate(b'2')
File "/usr/lib/python3.5/subprocess.py", line 786, in communicate
self._stdin_write(input)
File "/usr/lib/python3.5/subprocess.py", line 741, in _stdin_write
self.stdin.write(input)
ValueError: write to closed file
是否可以使用子流程来完成此任务而无需用户与程序交互?任何帮助将不胜感激。谢谢。