Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从文件读取输入?_Python_Python 2.7_File Io - Fatal编程技术网

Python:从文件读取输入?

Python:从文件读取输入?,python,python-2.7,file-io,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。Shell重定向 $ python foo.py < input.txt >

我有一个如下格式的文本文件:

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。Shell重定向

    $ python foo.py < input.txt > output.txt
    
    $python foo.pyoutput.txt
    
    您可以使用该模块使您的脚本支持从文件读取输入和从stdin读取

    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中读取

    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
    
    请注意,在这个代码段中,我只是读取了文件中第一行之后的所有输入,并没有真正使用
    num\u inputs
    变量,但您可以轻松地更改它,以强制执行实际读取的预期输入数


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

    假设您的输入来自文件,
    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