擅长:python、mysql、java
<pre><code>import subprocess
def check_file(dictfile, pgpfile):
# Command to run, constructed as a list to prevent shell-escaping accidents
cmd = ["gpg", " passphrase-fd", "0", pgpfile]
# Launch process, with stdin/stdout wired up to `p.stdout` and `p.stdin`
p = subprocess.Popen(cmd, stdin = subprocess.PIPE, stdout = subprocess.PIPE)
# Read dictfile, and send contents to stdin
passphrase = open(dictfile).read()
p.stdin.write(passphrase)
# Read stdout and check for message
stdout, stderr = p.communicate()
for line in stdout.splitlines():
if line.strip() == "gpg: WARNING: message was not integrity protected":
# Relevant line was found
return True
# Line not found
return False
</code></pre>
<p>然后使用:</p>
^{pr2}$
<p>如果“gpg:WARNING:”消息实际上在<code>stderr</code>上(我怀疑是这样),请将<code>subprocess.Popen</code>行改为:</p>
<pre><code>p = subprocess.Popen(cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE)
</code></pre>
<p>..以及从<code>stdout</code>到{<cd1>}的for循环,如下所示:</p>
<pre><code>for line in stderr.splitlines():
</code></pre>