2016-09-01 101 views
1
lines = [] 
for line in fileinput.input(): 
    lines.append(line) 
    print(line, end='') 

enter image description herepython3得到命令终端和打印输入参数进行

我的问题,我怎么能得到2到程序,并在同一时间打印出input.txt中的内容?到目前为止,它将得到2作为文件名并尝试将其作为文件打开,而不是如预期的那样。你在照片中看到。

+1

'sys.argv'是你的朋友。 –

+0

是的。但我无法得到input.txt – Allen

+1

看起来<不能以这种方式工作。 – Allen

回答

0

input.txt文件的内容可以使用来自python内部的sys.stdin文件句柄来加以说明。 参数必须使用sys.argv数组加以说明。

以下是一个示例脚本。

#!/usr/bin/python 
import sys 
arg=sys.argv[1] #take first argument 
lines=[] 
for line in sys.stdin: 
    lines.append(line) # save line from stdin to the array. Watch out for memory usage. 


print arg 
print lines 
0

@Eugene已经指出的那样,在你的命令:

./whale.py '2' < input.txt 

input.txt被重定向到标准输入流。 2将 转换为argv。

你得到的错误可能是因为不知怎的,你的脚本认为argv[1]是要打开的文件。

试试这个:

import sys 
print "this is sys.argv: {}".format(sys.argv[1]) 
print "below is STDIN:" 
for line in sys.stdin: 
    print line