0

subprocessPythonでの使用方法を学ぶために、本当に簡単なことをしようとしています

私がしようとしているのはこれです:

ll | egrep "*gz"

Pythonのマニュアルを読んだ後(よくわかりませんでした)、これを試しました:

lista = subprocess.Popen(['ls', '-alF'], stdout=subprocess.PIPE)
filtro = subprocess.Popen(['egrep', '"*gz"'], stdin=lista.stdout, stdout=subprocess.PIPE)
filtro.communicate()[0]

しかし、私が得たのは''、これを行う方法が本当にわからないことだけです。これを読みましが、まったく理解できなかったようです...後で使用するために、これがどのように機能するかを誰かに説明してもらえますか他のコマンドで??

前もって感謝します!!

4

2 に答える 2

1

問題は、egrep への引数を囲む二重引用符のセットである可能性があります。代わりにこれを試してください:

import subprocess
ls = subprocess.Popen(['ls', '-alF'], stdout=subprocess.PIPE)
egrep = subprocess.Popen(['egrep', '\.gz$'], stdin=ls.stdout, stdout=subprocess.PIPE)
print egrep.communicate()[0]

最初の正規表現が意味をなさないため、ここで「.gz」で終わるファイルを探していると想定しています。「gz」で終わるファイルを単に探している場合は、代わりに「gz$」を使用します。また、行のどこに「gz」が表示されているかを区別しない場合は、単に「gz」を使用してください。

編集:これは完全な例です。「pipe.py」、「test1.py.gz」、「test2.py.gz」の 3 つのファイルを含むディレクトリで、「pipe.py」は上記のスクリプトを実行します。

$ python pipe.py

結果で

-rw-r--r-- 1 amaurea amaurea  146 Jan 30 20:54 test1.py.gz
-rw-r--r-- 1 amaurea amaurea  150 Jan 30 20:54 test2.py.gz
于 2013-01-30T20:28:24.163 に答える