gpt4 book ai didi

python - 如何检查python子进程中是否没有输出?

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:58 25 4
gpt4 key购买 nike

我使用 Python 3。这是我脚本的一部分:

proc = subprocess.Popen(["git", "ls-remote", "--heads", "origin", "master"],stdout=subprocess.PIPE)
line = proc.stdout.readline()
if line != '':
print("not empty")
print(line)
else:
print(empty)

我想检查是否有远程主机。如果 line 的内容不为空(= 有 master),它会打印“not empty”。如果没有 master = 没有输出我想打印空。

但它不起作用:

这是没有 python 的输出:

$ git ls-remote --heads origin xxx (no output)
$ git ls-remote --heads origin master (output)
a5dd03655381fcee94xx4e759ceba7aeb6456 refs/heads/master

这是当 master 存在时我运行脚本时的输出:

b'a5dd03655381fcee94xx4e759ceba7aeb6456\trefs/heads/master\n'

当 master 不存在时:

b''

我怎样才能使这项工作?管道似乎采用了不同的符号,例如 b''\n 而不仅仅是单词。

最佳答案

你得到一个二进制字符串作为输出;许多程序进行内部解码并向您显示文本字符串,但 subprocess.Popen 不是其中之一。

但是你可以很容易地自己解码:

out_bin = b'a5dd03655381fcee94xx4e759ceba7aeb6456\trefs/heads/master\n'
out_txt = out.decode('utf-8') # Should be `utf-8` encoded

\t\n 是制表符和换行符,它们将在您 print 时进行相应的格式化。

此外,文本字符串的所有方法也适用于二进制字符串,只是实现/表示不同而已。

此外,在您的 if line != '': 条件下,您需要通过以下方式明确告诉您正在匹配二进制字符串:

if line != b'':

或者更好,因为空字符串在 Python 中是假的,简单地做:

if not line:

关于python - 如何检查python子进程中是否没有输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813957/

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