本文介绍了Python:通过读取标准输出关闭 for 循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
import os
dictionaryfile = "/root/john.txt"
pgpencryptedfile = "helloworld.txt.gpg"
array = open(dictionaryfile).readlines()
for x in array:
x = x.rstrip('\n')
newstring = "echo " + x + " | gpg --passphrase-fd 0 " + pgpencryptedfile
os.popen(newstring)
我需要在 for 循环中创建一些东西来读取 gpg 的输出.当 gpg 输出这个字符串 gpg: WARNING: message was notintegrity protected
时,我需要关闭循环并打印 Success!
I need to create something inside the for loop that will read gpg's output. When gpg outputs this string gpg: WARNING: message was not integrity protected
, I need the loop to close and print Success!
我该怎么做,背后的原因是什么?
How can I do this, and what is the reasoning behind it?
谢谢大家!
推荐答案
使用 subprocess.check_output 调用 gpg
并根据其输出中断循环.
Use subprocess.check_output to call gpg
and break the loop based on its output.
这样的东西(未经测试,因为我对 gpg
一无所知):
Something like this (untested since I don't know anything about gpg
):
import subprocess
dictionaryfile = "/root/john.txt"
pgpencryptedfile = "helloworld.txt.gpg"
with open(dictionaryfile, 'r') as f:
for line in f:
x = line.rstrip('\n')
cmd = ["echo " + x + " | gpg --passphrase-fd 0 " + pgpencryptedfile]
output = subprocess.check_output(cmd, shell=True)
if 'gpg: WARNING: message was not integrity protected' in output:
break
这篇关于Python:通过读取标准输出关闭 for 循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!