努力从命令行

时间:2016-07-12 11:37:00

标签: python input terminal

我试图通过简单地使用

从命令行运行以下函数
python filename.py

然而,它并没有做我想要的。

有人可以帮我解决这个问题吗?我确定我错过了很简单的事情......

 inFile = ""
 inFile = raw_input("Enter the File Name: ")
 x = open(inFile, 'w')

 def summation(x):
     sum = 0
     for i in x:
         sum = sum + i
     return sum

 if __name__ == "__main__":
     print(summation(x))

希望它能够解释我想要达到的目标,但是如果不是......

我要求raw_input;这将是一个充满数字的文本文件(每个都在它自己的行上)。该文件应该输入变量x,然后在summation函数中使用。最后,使用for循环将每个值相加并返回总和(并在终端中打印)。

2 个答案:

答案 0 :(得分:5)

有两个问题:

  • 您以写入模式打开文件。这将删除文件的所有内容。删除"w"参数。
  • 您无法将字符串(从文件中读取)添加到整数。您需要先将它们转换为整数:sum += int(i)

此外,您应该在阅读完其内容后关闭该文件。行infile = ""是不必要的。

答案 1 :(得分:3)

更加pythonic版本......

def line_to_int(line):
    line = line.strip()
    if not line:
        # handles the case of empty lines
        return 0
    return int(line)

def sumfile(f):
    return sum(line_to_int(line) for line in f)

if __name__ == "__main__":
     fname = raw_input("Enter the File Name: ").strip()
     with open(fname) as f:
         print(sumfile(f))

或者更简单,只要您不打算在int(line)的呼叫周围添加错误处理(感谢Jon Clements):

if __name__ == "__main__":
     fname = raw_input("Enter the File Name: ").strip()
     with open(fname) as f:
         print(sum(int(line.strip() or 0) for line in f))