如何在标准输入中传递python脚本中的选项或参数?

时间:2013-10-15 13:15:24

标签: python command-line

我的python脚本正在使用stdin

用法为grep "asda" myfile" | python myscript.py

我以这种方式使用它

lines = []
for line in fileinput.input():
    lines.append(line)

它运作正常。

但现在我需要传递grep "asda" myfile" | python myscript.py -o out

等参数

我试图使用fileinput.input(sys.stdin)仅从stdin获取行,但它失败了

Traceback (most recent call last):
  File "parser.py", line 29, in <module>
    for line in fileinput.input(sys.stdin):
  File "/usr/lib/python2.7/fileinput.py", line 253, in next
    line = self.readline()
  File "/usr/lib/python2.7/fileinput.py", line 345, in readline
    self._file = open(self._filename, self._mode)
IOError: [Errno 2] No such file or directory: '<Operation adaptorMethod="search" adaptorName="Search" status="Success" timeCreated="2013-10-15T02:43:33.728-0700" timeLastUpdated="2013-10-15T02:43:33.728-0700"/>\n'

grep的输出包含这样的行

 <Operation adaptorMethod="search" adaptorName="Search" status="Success" timeCreated="2013-10-15T02:43:33.728-0700" timeLastUpdated="2013-10-15T02:43:33.728-0700"/>

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

您需要sys.argv,它将为您提供在命令行上传递给脚本的值。

答案 1 :(得分:0)

import fileinput

for line in fileinput.input():
    pass

答案 2 :(得分:0)

stdin可以由sys.stdin.readlines()而不是fileinput.input()中的行处理