C/C++ 'dan gelen python için oldukça yeniyim,' main.py 'bir bash kabuğundan verilen imprutayı nasıl yeniden düzenleyeceğimi/kullanacağımı merak ediyorum:Python komut satırı 'dosya giriş akışı'
piton main.py < text.txt
sys.stdin
den
C/C++ 'dan gelen python için oldukça yeniyim,' main.py 'bir bash kabuğundan verilen imprutayı nasıl yeniden düzenleyeceğimi/kullanacağımı merak ediyorum:Python komut satırı 'dosya giriş akışı'
piton main.py < text.txt
sys.stdin
den
. 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.
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
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)
, o da argüman olarak listelenen dosyalardan okuyabilir.
+1. Onu duymamıştım. Güzel. –
@walter 'line = line.rstrip() 'işlevini kullanın. Bunun için – Keith