gpt4 book ai didi

python - 在 subprocess.Popen 中使用 && 进行命令链接?

转载 作者:IT王子 更新时间:2023-10-29 01:16:03 31 4
gpt4 key购买 nike

我正在将 subprocess.PopenPython 一起使用,但我还没有遇到用于连接命令的优雅解决方案(即 foobar&& bizbang) 通过 Popen

我可以这样做:

p1 = subprocess.Popen(["mmls", "WinXP.E01"], stdout=subprocess.PIPE)
result = p1.communicate()[0].split("\n")
for line in result:
script_log.write(line)

script_log.write("\n")

p1 = subprocess.Popen(["stat", "WinXP.E01"], stdout=subprocess.PIPE)
result = p1.communicate()[0].split("\n")
for line in result:
script_log.write(line)

但这真的不是很美观(尤其是当我通过 Popen 以菊花链方式连接多个命令时。


我想在尽可能少的命令 block 中复制此输出。

not@work ~/ESI/lab3/images $ mmls WinXP.E01 && echo -e "\n" && stat WinXP.E01
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000000062 0000000063 Unallocated
02: 00:00 0000000063 0020948759 0020948697 NTFS (0x07)
03: ----- 0020948760 0020971519 0000022760 Unallocated


File: `WinXP.E01'
Size: 4665518381 Blocks: 9112368 IO Block: 4096 regular file
Device: 14h/20d Inode: 4195953 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nott) Gid: ( 1000/ nott)
Access: 2013-03-16 23:20:41.901326579 -0400
Modify: 2013-03-04 10:05:50.000000000 -0500
Change: 2013-03-13 00:25:33.254684050 -0400
Birth: -

有什么建议吗?

注意:我想避免将其输入 subprocess.Popen

p1 = subprocess.Popen(["mmls WinXP.E01 && echo -e '\n' && stat WinXP.E01"], stdout=subprocess.PIPE)

最佳答案

&&是shell操作符,POpen默认不使用shell。

如果您想使用 shell 功能,请在您的 POpen 调用中使用 shell=True,但请注意它会稍微慢一些/占用更多内存。

p1 = subprocess.Popen(["mmls", "WinXP.E01", "&&", "echo", "-e", "\"\n\"", "&&", "stat", "WinXP.E01"],
stdout=subprocess.PIPE, shell=True)

关于python - 在 subprocess.Popen 中使用 && 进行命令链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467237/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com