質問

ように複製するこのpython:

gvimdiff <(hg cat file.txt) file.txt

(hg猫file.txt 出力は、最近では組版file.txt)

いかパイプのファイルをgvimdiff思うが受け入れ別のファイル:

$ hg cat file.txt | gvimdiff file.txt -
Too many edit arguments: "-"

のpython部---

# hgdiff.py
import subprocess
import sys
file = sys.argv[1]
subprocess.call(["gvimdiff", "<(hg cat %s)" % file, file])

がサブプロセスと呼ばれるだけでパス <(hg cat file)gvimdiff としてファイル名を指定します。

で、本当にありがとうにリダイレクトコマンドとしてbashているか。簡単のための日本酒だけで猫のファイルのリダイレクトでdiff:

diff <(cat file.txt) file.txt
役に立ちましたか?

解決

が可能となります。としてのPython2.5しかし、このメカニズムはLinuxの特異的な携帯:

import subprocess
import sys

file = sys.argv[1]
p1 = subprocess.Popen(['hg', 'cat', file], stdout=subprocess.PIPE)
p2 = subprocess.Popen([
    'gvimdiff',
    '/proc/self/fd/%s' % p1.stdout.fileno(),
    file])
p2.wait()

とはいうものの、特定の場合、差分をできる単一のファイルからstdin、削除、利用をおbashの疲れを機能性の問題:

file = sys.argv[1]
p1 = subprocess.Popen(['hg', 'cat', file], stdout=subprocess.PIPE)
p2 = subprocess.Popen(['diff', '-', file], stdin=p1.stdout)
diff_text = p2.communicate()[0]

他のヒント

また、コマンドモジュール:

import commands

status, output = commands.getstatusoutput("gvimdiff <(hg cat file.txt) file.txt")

また、popenセットの機能を希望する場合には、実際にgrokのデータからのコマンドで走っています。

この例では、 docs:

p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]

という専用に作成する方法もあります。

import subprocess
import sys

file = sys.argv[1]
p1 = Popen(["hg", "cat", file], stdout=PIPE)
p2 = Popen(["gvimdiff", "file.txt"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]

この除去に使用される、デフォルトの固有の/proc/self/fdビットの、それぞれの作業を他のunicesのようにSolarisのBSDs(MacOS)も作業でもWindows上でしか利用できません。

それだけではコンピュータの仕組みに基づっていることがあるでしょう探しているけど、なかなか見つのpopenます。

http://docs.python.org/lib/module-popen2.html

popen3(cmd[,bufsize[,mode]]) Cmdを実行してサブプロセスです。を返しますファイルオブジェクト(child_stdout,child_stdin,child_stderr).

movie, マーク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top