如何将文件作为默认用户输入读取?

时间:2017-11-19 22:43:21

标签: python python-3.x io user-input

如何使用用户input()函数读取python 3.6.x中的整个文件?就像挑战网站的算法一样。例如:

  • 我有一个包含以下内容的文件:

    line 1
    line 2
    line 3
    end
    
  • 我的程序会执行以下操作:

    x = input()
    while x != 'end':
        print("I am at", x)
        x = input()
    
  • 然后我会输出:

    I am at line 1
    I am at line 2
    I am at line 3
    

我想我需要将我的python示例程序包装为另一个程序(也可能是python或OS脚本),该程序调用第一个将文件作为用户输入传递的程序。但我怎么能这样做呢?

2 个答案:

答案 0 :(得分:3)

通常这样的挑战会通过stdin管道输入,并期望通过stdout响应。

为此,请从命令行运行命令,如此;

python program.py < input.txt

如果要将脚本的输出保存到文件中,可以将其重定向到一个文件。

python program.py < input.txt > output.txt

答案 1 :(得分:2)

此作业的常用标准lib工具是fileinput模块:

import fileinput

for line in fileinput.input():
    print(f'working with line {line}')

然后从shell中选择以下内容(它们都有效):

$ python3 my_script.py my_file.txt
$ python3 my_script.py < my_file.txt
$ cat my_file.txt | python3 my_script.py