7

次のような入力ファイル test.txt があります。

host:dc2000
host:192.168.178.2

以下を使用して、これらのマシンのすべてのアドレスを取得したい:

grep "host:" /root/test.txt 

など、Python 経由でコマンド出力を取得します。

import subprocess
file_input='/root/test.txt'
hosts=subprocess.Popen(['grep','"host:"',file_input], stdout= subprocess.PIPE)
print hosts.stdout.read()

しかし、結果は空の文字列です。

どのような問題が発生したかわかりません。解決方法を教えていただけますか?

4

3 に答える 3

10

それを試してください:

import subprocess
hosts = subprocess.check_output("grep 'host:' /root/test.txt", shell=True)
print hosts
于 2012-10-09T22:46:31.297 に答える
2

コードは機能するはずですが、ユーザーがファイルを読み取るためのアクセス権を持っていることを確認しますか?

また、"host:"ファイルにが含まれていることを確認しますか?代わりにこれを意味するかもしれません:

hosts_process = subprocess.Popen(['grep','host:',file_input], stdout= subprocess.PIPE)
hosts_out, hosts_err = hosts_process.communicate()
于 2012-10-09T22:47:47.933 に答える