Python:从文件中读取输入?

时间:2015-04-11 18:54:52

标签: python python-2.7 file-io

我有一个格式为

的文本文件
2
1 3
2 4

我编写了一个python程序,要求输入数量并打印出值和。

n = int(raw_input())
for _ in range(n):
     a,b = map(int,raw_input().split())
     print a+b

但是

  1. 我应该如何从文件中获取输入,以便第一行是测试用例的数量而下一行是输入?
  2. 将输出打印到文件?

3 个答案:

答案 0 :(得分:4)

1 + 2. Shell重定向。

$ python foo.py < input.txt > output.txt

答案 1 :(得分:1)

您可以使用fileinput模块使脚本支持从文件读取输入和从标准输入读取。

import fileinput
num_inputs = None
for line in fileinput.input():
    if num_inputs is None:
        num_inputs = int(line)
    else:
        a,b = map(int, line.split())
        print a+b

这样,如果您将文件名作为参数传递给脚本,它会从中读取,否则从stdin读取。

请注意,在此片段中,我只读取了第一行之后文件中的所有输入,并且没有真正使用num_inputs变量,但您可以轻松地更改它以强制执行预期的输入数量读取。

至于写入文件,这是一个基本的python问题,已经回答here

答案 2 :(得分:1)

假设您的输入来自文件inp.txt,例如:

$ cat inp.txt 
2
1 3
2 4

您可以使用下面的代码,它基本上逐行读取输入文件,并计算值并存储它们:

with open("inp.txt", "r") as inp, open("out.txt", "w") as out:
    no_of_cases = int(inp.readline())
    for line in inp:
        a,b = map(int,line.split())
        out.write("%s\n" % (a + b))

请注意,上面任何地方的代码都没有使用no_of_cases,因为这个示例是多余的。

这将为您生成输出文件out.txt,其中包含以下数据:

$ cat out.txt 
4
6