Python command line 'file input stream'
I'm fairly new to python coming from C/C++, I was wondering how I would get my 'main.py' to reconize/use the imput given from a bash shell as:
pyt开发者_如何学Pythonhon main.py < text.txt
(the file is in plain text)
Read from sys.stdin
:
import sys
sys.stdin.read()
Being a file-like object, you can use its reading functions or simply iterate over the input lines:
for line in sys.stdin:
print line
Using the fileinput
module would be most appropriate here, and more flexible.
http://docs.python.org/library/fileinput.html
import fileinput
for line in fileinput.input():
process(line)
In addition to supporting stdin, it can also read from files listed as arguments.
I would use argparse to create an option parser that accepts a file path and opens it.
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()
If type='open'
does not provide enough control, it can be replaced with argparse.FileType('o')
which accepts bufsize
and mode
args (see http://docs.python.org/dev/library/argparse.html#type)
EDIT: My mistake. This will not support your use case. This will allow you to provide a filepath, but not pipe the file contents into the process. I'll leave this answer here as it might be useful as an alternative.
精彩评论