jython max() 'int' object 不可迭代

jython max() 'int' object is not iterable

我正在寻求帮助。 我设法使用以下代码将 row_id 添加到我的文件中,并且工作正常。

infile = open(inputfile, 'r')
outfile = open(outputfile, 'w')

for i, line in enumerate(infile): 
#write header
    row_sec = ("00000" + str(i))[-5:]
    row_nr = max(row_sec)
    outfile.write(row_sec + "Company" + column[0] + column[1] + row_nr + "\n")
outfile.close()
infile.close()

结果:

问题是我需要将 nr 条记录放在 header 行中(在本例中为 00037)

当我使用

records = max(i) 

records = max(row_id) 

我收到错误 TypeError: 'int' object 不可迭代

我阅读了有关此错误的信息并理解它,但仍然无法弄清楚如何摆脱它。有没有一种巧妙而简单的方法来修复我的代码?

你可以延迟写入并从循环中获取变量:

buffer = []
for i, line in enumerate(infile): 
    # create line content
    buffer.append('%5d' % i + " Company " + line + "\n")
# i is still set to the last value
# write header
outfile.write('%5d' % i + " Elements\n")
for line in buffer:
    outfield.write(line)

这会写成类似

00037 Elements
00000 Company ACME
00001 Company EMCA
...
00037 Company MECA

请注意,如果您需要设置第一个索引,enumerate 需要一个可选参数 start


如果您的文件大于可用内存,您可以读取两次而不是缓冲:

# read once to get number of entries
with open(inputfile, 'r') as infile:
    companies = sum(1 for line in infile)

infile = open(inputfile, 'r')
outfile = open(outputfile, 'w')

# write header
outfile.write('%5d' % companies + " Elements\n")
for i, line in enumerate(infile):
    row_sec = ("00000" + str(i))[-5:]