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()
结果:
- 00000 - header
- 00001 - 数据
- 00002 - 数据
- ..... - 数据
- 00037 - 数据最后一行
问题是我需要将 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:]
我正在寻求帮助。 我设法使用以下代码将 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()
结果:
- 00000 - header
- 00001 - 数据
- 00002 - 数据
- ..... - 数据
- 00037 - 数据最后一行
问题是我需要将 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:]