ฉันมีสคริปต์ Python อยู่สองสามตัวและฉันก็กำลังเขียนมันใหม่ ฉันมีปัญหาเดียวกันกับพวกเขาทั้งหมด
ฉันไม่เห็นได้ชัดว่าจะเขียนโปรแกรมอย่างไรเพื่อให้พวกเขาทำตัวเหมือนเครื่องมือยูนิกซ์ที่เหมาะสม
เพราะสิ่งนี้
$ cat characters | progname
และนี่
$ progname characters
ควรสร้างผลลัพธ์เดียวกัน
สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถพบได้ใน Python คือไลบรารี fileinput น่าเสียดายที่ฉันไม่เห็นวิธีเขียนสคริปต์ Python ของฉันอีกครั้งซึ่งทั้งหมดมีลักษณะดังนี้:
#!/usr/bin/env python
# coding=UTF-8
import sys, re
for file in sys.argv[1:]:
f = open(file)
fs = f.read()
regexnl = re.compile('[^\s\w.,?!:;-]')
rstuff = regexnl.sub('', fs)
f.close()
print rstuff
ไลบรารี fileinput ประมวลผล stdin หากมี stdin และประมวลผลไฟล์หากมีไฟล์ แต่มันวนซ้ำกว่าบรรทัดเดียว
import fileinput
for line in fileinput.input():
process(line)
ฉันไม่เข้าใจจริงๆ ฉันเดาว่าคุณกำลังจัดการกับไฟล์ขนาดเล็กหรือหากคุณไม่ได้ทำอะไรกับไฟล์มากขนาดนี้อาจดูเหมือนชัดเจน แต่สำหรับจุดประสงค์ของฉันสิ่งนี้ทำให้ช้ากว่าการเปิดไฟล์ทั้งหมดและอ่านมันเป็นสตริงดังที่ได้กล่าวไว้ข้างต้น
ขณะนี้ฉันเรียกใช้สคริปต์ด้านบนเช่น
$ pythonscript textfilename1 > textfilename2
แต่ฉันต้องการที่จะสามารถเรียกใช้มัน (และพี่น้องของมัน) ในท่อเหมือน
$ grep pattern textfile1 | pythonscript | pythonscript | pythonscript > textfile2