2011-06-20 20 views

cevap

2

. type='open' yeterli kontrol sağlamazsa

import argparse 

def main(): 
    parser = argparse.ArgumentParser() 
    parser.add_argument('infile', type='open') 
    args = parser.parse_args() 

    for line in args.infile: 
     print line 

if __name__ == '__main__': 
    main() 

, bu bufsize ve mode args kabul argparse.FileType('o') ile değiştirilebilir

EDIT (http://docs.python.org/dev/library/argparse.html#type bakınız): My hata. Bu kullanım durumunuzu değil desteklemez. Bu, dosya yolunu sağlamanıza izin verir, ancak dosya içeriklerini işlemeye aktarmaz. Bu cevabı burada alternatif olarak yararlı olabileceği için bırakacağım.

8

okuyun (dosya düz metin olarak ise):

import sys 
sys.stdin.read() 

bir file-like object, giriş hattı üzerinden yineleme sadece kendi okuma işlevlerini kullanabilir veya Olmak: Bir dosya yolu kabul eder ve onu açan bir seçenek ayrıştırıcı oluşturmak için argparse kullanacağı

for line in sys.stdin: 
    print line 
+0

@walter 'line = line.rstrip() 'işlevini kullanın. Bunun için – Keith

6

fileinput modülünü kullanmak burada daha uygun ve daha esnektir. Stdin desteklemenin yanı sıra

import fileinput 
for line in fileinput.input(): 
    process(line) 

http://docs.python.org/library/fileinput.html

, o da argüman olarak listelenen dosyalardan okuyabilir.

+0

+1. Onu duymamıştım. Güzel. –