2014-11-20 79 views
1

我的python代碼在bash腳本中調用,並且python腳本還需要bash循環中的輸入參數。但我不確定最好的方法來做到這一點。這裏是我的嘗試:調用python腳本,需要從bash中輸入循環

慶典代碼:

cat filelList.txt | while read i;#file1List.txt stores file names 
do 
python script.py $i > $i.txt 
done 

蟒蛇位的是我不知道的:

file = sys.argv[0] # not sure about this 
in = open(file) 
for line in iter(in): # not sure about this 
    do something....... 

有誰知道寫這些蟒蛇3行的最好方法?謝謝

+2

'in'是一個保留字,你不能在變量名中使用它。 – 2014-11-20 21:35:49

+0

查看此答案http://stackoverflow.com/a/1009879/2676531及其第一條評論。 – Celeo 2014-11-20 21:37:15

+0

sys.argv [0]不是第一個參數,而是您正在運行的腳本的名稱。 – igon 2014-11-20 21:39:29

回答

1

爲什麼不用python做所有事情?假設你有,你必須處理每個文件的文件夾:

import sys 
import os 

assert os.path.isdir(sys.argv[1]) 
listing = os.listdir(sys.argv[1]) 

for filename in listing: 
    with open(sys.argv[1]+"/"+filename,'r') as f: 

     for line in f: 
      #do something                                                      
      pass 

另外,如果你有一個包含其他文件進程列表中的文件:

import sys 
import os 

assert os.path.isfile(sys.argv[1]) 

with open(sys.argv[1]) as filelist: 
    filenames = [line.strip() for line in filelist] 
    for filename in filenames: 
     if not os.path.isfile(filename): 
      print >> sys.stderr , "{0} is not a valid file".format(filename) 
      break 
     with open(filename,'r') as f: 
      for line in f: 
       #do something                                                     
       pass 
+0

非常感謝Igon!你的代碼非常有用。 – user27976 2014-11-21 13:56:12