में एक और की इनपुट करने के लिए आदेश को पुन: निर्देशित मैं अजगर में इस को दोहराने के लिए करना चाहते हैं:अजगर
gvimdiff <(hg cat file.txt) file.txt
(एचजी बिल्ली file.txt file.txt की सबसे हाल ही में प्रतिबद्ध संस्करण आउटपुट)
मुझे पता है कैसे करने के लिए पाइप फ़ाइल gvimdiff है, लेकिन यह एक और फ़ाइल को स्वीकार नहीं करेगा:
$ hg cat file.txt | gvimdiff file.txt -
Too many edit arguments: "-"
अजगर हिस्सा करने के लिए हो रही है ...
# hgdiff.py
import subprocess
import sys
file = sys.argv[1]
subprocess.call(["gvimdiff", "<(hg cat %s)" % file, file])
जब उपप्रोसेसर कहा जाता है तो यह केवल <(hg cat file)
को gvimdiff
पर फ़ाइल नाम के रूप में पास करता है।
तो, क्या बैश के रूप में कमांड को रीडायरेक्ट करने का कोई तरीका है? सादगी की खातिर सिर्फ बिल्ली एक फ़ाइल के लिए और इसे पुन: निर्देशित diff रहे हैं:
import commands
status, output = commands.getstatusoutput("gvimdiff <(hg cat file.txt) file.txt")
वहाँ भी, कार्यों का popen सेट है यदि आप वास्तव में grok हैं:
diff <(cat file.txt) file.txt
अच्छा समाधान। इसके अलावा ब्याज भी है: > पायथन-सी "आयात sys; प्रिंट (sys.argv)" <(echo हैलो) function_proj.cc ['-c', '/ dev/fd/63', ' function_proj।सीसी '] – gatoatigrado
@gatoatigrado - कम से कम मेरे सिस्टम पर, '/ dev/fd''/proc/self/fd' –