2013-09-01 6 views
5

द्वारा awk कमांड को निष्पादित करने के लिए कैसे मेरे पास डेटा का एक सेट है जिसे मैं सौदा करना चाहता हूं। मैं लिनक्स में "awk" कमांड निष्पादित करने के लिए एक पायथन कोड चलाने की कोशिश कर रहा था। होवरवर कोई फर्क नहीं पड़ता कि मैं विभिन्न तर्कों या कार्यों का प्रयास कैसे करता हूं, यह सब काम नहीं करता है।पायथन कोड

दो अलग-अलग तरीके हैं जिनमें मैंने कोशिश की है, लेकिन वे सभी काम नहीं कर पाए। मैं नहीं जानता कि क्यों

1)

#!/usr/bin/env python 
import subprocess as sp 
cmd = "awk, '{print $2 '\t' $4 '\t' $5 '\t' $6}', B3LYPD.txt" 
args = cmd.split(',') 
p = sp.Popen(args, stdin = sp.PIPE, stdout = sp.PIPE, stderr = sp.PIPE) 

2)

#!/usr/bin/env python 
import subprocess as sp 
cmd = "awk, '{print $2 '\t' $4 '\t' $5 '\t' $6}'" 
args = cmd.split(',') 
p = sp.Popen(args, stdin = sp.PIPE, stdout = sp.PIPE, stderr = sp.PIPE) 
c = p.communicate('B3LYPD.txt') 
print c 
+0

'shlex.split'' str.split' का प्रयोग करें। –

+7

यदि आप पहले से ही पाइथन में प्रोग्रामिंग कर रहे हैं, तो क्या आप वाकई 'awk' को कॉल करने की आवश्यकता है? पाइथन शायद आपको 'अजीब' से ठीक कुछ भी कर सकता है। –

+0

यदि आपको 'c = "का उपयोग करने के बजाय तारों की एक सूची की आवश्यकता है, तो, अन्य"; args = cmd.split (',') ', आप केवल' args = ["this", "that", "other"] 'का उपयोग कर सकते हैं और विभाजन कमांड को छोड़ सकते हैं। –

उत्तर

5

जबकि मैं मानता हूँ कि यह वास्तव में सबसे अच्छा बल्कि awk लागू की तुलना में, पायथन में किया है। यदि आपको वास्तव में ऐसा करने की आवश्यकता है, तो वास्तविक त्रुटि आपके अजीब के साथ है।

#!/usr/bin/env python 
import subprocess as sp 
args = ["awk", r'{OFS="\t"; print $2,$4,$5,$6}', "B3LYPD.txt"] 
p = sp.Popen(args, stdin = sp.PIPE, stdout = sp.PIPE, stderr = sp.PIPE) 
print(p.stdout.readline()) # will give you the first line of the awk output 

संपादित करें: फिक्स्ड लापता बोली।

संबंधित मुद्दे