2017-02-09 52 views
0

我刚刚在python中使用管道和I/O,我从文件中使用sys.stdin.readlines()python中的管道和参数

你如何阅读额外的参数? 例如:

more input.txt | python program.py 200 

我要存储在我的计划“200”作为变量(INT)使用。

我尝试:

number = int(sys.argv[1]) 

出于测试目的,我刚才输入

print number 

,但我没有得到 '200'。


更好的解释:

我有两个文件, '的test.txt' 和 'test.py'

test.py

#!/usr/bin/python 
import sys 
line = "" 
for n in [line for line in sys.stdin.readlines()]: 
    print n 

当运行

$ more test.txt | python test.py 

它会打印出来

asdfsdf 200 

sldkfjs 100 

kljslkd 300 

我的首要目标就是打印出来与我作为参数传递的数量

我尝试行:

test.py

#!/usr/bin/python 
import sys 
number = int(sys.argv[1]) 
line = "" 
for n in [line for line in sys.stdin.readlines()]: 
    if n.split()[1] == number: 
     print n 

n.split() [1]应该是文件中每一行的数字是否正确? 当运行

$ more test.txt | python test.py 200 

我想回的是:

asdfsdf 200 

但是,相反它是空白......

+0

外貌并适用于我。我不确定这里有什么问题。 –

+0

@Scott Carpenter对不起,我用更好的例子更新了这个问题 –

回答

0

我无法复制你的问题。

这是我的文件:

#!/usr/bin/env python 

import sys 

number = int(sys.argv[1]) 
print number 

正在从命令行与more input.txt | python program.py 200运行和输出是200

你可以尝试print str(sys.argv)调查到底是什么在sys.argv中

+0

对不起,我创建了一个测试情境并在我的问题中更新了它。 –

+0

nvm,我已经想通了,谢谢你的最后一个提示 –