Python 获取类型尝试对文件内容求和时出错

Python 获取类型尝试对文件内容求和时出错,python,python-3.x,Python,Python 3.x,TypeError:不支持+=:“int”和“str”的操作数类型 您的项在代码中未声明为int。尝试解析它 ctn =0 myfile = open("lab3.txt") lines = myfile.readlines for item in myfile: ctn += item print(int(ctn)) 你所说的“文件内容总和”到底是什么意思?你把所有的数字加在一个叫做“lab3.txt”的文件里了吗 要将文件内容存储在变量中,可以使用myfile.readli

TypeError:不支持+=:“int”和“str”的操作数类型


您的项在代码中未声明为int。尝试解析它

ctn =0
myfile = open("lab3.txt")
lines = myfile.readlines
for item in myfile:
        ctn += item
print(int(ctn))

你所说的“文件内容总和”到底是什么意思?你把所有的数字加在一个叫做“lab3.txt”的文件里了吗

要将文件内容存储在变量中,可以使用myfile.readlines。不是myfile.readlines—括号是必需的。如果不使用括号,则该语句不会读取任何内容。或者使用for块一次遍历一行文件的内容。但并非两者都有,正如影子游侠的评论所解释的那样

假设'lab3.txt'包含以下行

int ctn = 0
myfile = open("lab3.txt")
lines = myfile.readlines
for item in myfile:
    ctn += int(item)
print(ctn)
要找到它们的总数,你可以这样做

84
236
956
31
163
538
4
861
在这里,item将按顺序获取文件中每一行的字符串值。它被转换为整数并添加到ctn

readlines返回一个列表。该列表的每个元素都是一个字符串,字符串是文件中的行。如果必须使用readlines,则必须将列表中的元素转换为整数

ctn = 0
myfile = open('lab3.txt')
for item in myfile:
    ctn += int(item) # convert string to integer
print(ctn)
别忘了关闭文件

myfile = open('lab3.txt')
lines = myfile.readlines()
lines_int = [int(item) for item in lines]
ctn = sum(lines_int)
print(ctn)
如果您使用文件上下文,就不必为此而烦恼了。观察如何将代码减少到两行

myfile.close()

您还应该删除lines=myfile.readlines;你在这里很幸运,因为你实际上没有调用readlines;如果有,则对于myfile:中的项,将不会产生任何结果,因为readlines调用会使文件发出咯咯声,并使文件对象位于文件末尾,没有任何内容可读取。是否尝试检查项的类型?默认情况下,您将从文件中读取字符串,如果要将其用作int,则必须显式地对其进行类型转换。
with open('lab3.txt') as myfile:
    ctn = sum([int(item) for item in myfile.readlines()])