나는 보통 펄에서이 작업을 수행 :명령 행에서 전달되는 모든 파일 행을 반복하는 방법은 무엇입니까?
이 whatever.pl
while(<>) {
#do whatever;
}
다음
cat foo.txt | whatever.pl
지금, 내가 파이썬에서이 작업을 수행 할 수 있습니다. 나는 sys.stdin
을 시도했지만 Perl에서했던 것처럼 어떻게 해야할지 모릅니다. 어떻게 입력을 읽을 수 있습니까?
나는 보통 펄에서이 작업을 수행 :명령 행에서 전달되는 모든 파일 행을 반복하는 방법은 무엇입니까?
이 whatever.pl
while(<>) {
#do whatever;
}
다음
cat foo.txt | whatever.pl
지금, 내가 파이썬에서이 작업을 수행 할 수 있습니다. 나는 sys.stdin
을 시도했지만 Perl에서했던 것처럼 어떻게 해야할지 모릅니다. 어떻게 입력을 읽을 수 있습니까?
이 시도 :이 같은
import fileinput
for line in fileinput.input():
process(line)
import sys
def main():
for line in sys.stdin:
print line
if __name__=='__main__':
sys.exit(main())
-1 : main returns None - 어떤 값이 OS에 반환되어야 하는지를 완벽하게 * 분명하지 않습니다. –
@ S.Lott : sys.exit이 None을 처리하는 방법은 아주 분명합니다. –
이것은 정상적으로 수행하는 방법이지만 OP는 명령 줄에서 명명 된 모든 파일을 반복하고 싶지만 stdin은 반복합니다. 그 유스 케이스의 경우, fileinput이 최선의 방법이다. –
뭔가 :
import sys
for line in sys.stdin:
# whatever
import sys
for line in sys.stdin:
# do stuff w/line
1이되므로이 방법은, "sys.stdin 라인을위한"보다 유연한 파일 이름에 대한 작업은 cmd 라인 인수로 전달됩니다. – user26294