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

3

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

  • I have a file with the following content:

    line 1
    line 2
    line 3
    end
    
  • My program would do something like:

    x = input()
    while x != 'end':
        print("I am at", x)
        x = input()
    
  • Then I would have as output:

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

我想我需要用另一个程序(可能是Python或操作系统脚本)包装我的Python示例程序,并将文件作为用户输入传递给第一个程序。但是我应该如何实现呢?

2个回答

3
通常这种挑战会通过标准输入读取输入,并通过标准输出返回响应。为了做到这一点,请在命令行中运行您的命令,例如:
python program.py < input.txt

如果您想将脚本的输出保存到文件中,可以将其重定向到一个文件。
python program.py < input.txt > output.txt

谢谢,@Shadow!我希望我能把你和@wim的答案都标为正确。但我做不到,他更快。哈哈哈...祝好! - Adailson De Castro
1
从技术上讲,我比原回答快了3分钟(将鼠标悬停在“1小时前回答”上即可查看时间戳:P),但无论如何我都不介意。 - Shadow
1
哎呀!你说得对。为了公平起见,我已将你的答案设置为正确答案。对不起,大家。 - Adailson De Castro

2

这个任务通常使用标准库工具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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接