我用一种更容易理解的方式来做这件事,并且使用更少的捷径,以便让您进一步了解这是如何工作的以及为什么这样做。前面的答案是有效的,但是如果您不熟悉某些内置函数,您将无法理解该函数在做什么。
因为您没有发布任何代码,所以我决定这样做,因为您可能不熟悉基本的python语法以外的其他内容,因为您对问题的措辞使您看起来好像没有尝试,也不知道如何处理问题
下面是在basic python中执行此操作的步骤:
首先,你应该把你的文件读到一个列表中,以便保存:my_file = 'really_big_file.txt'
hold_lines = []
with open(my_file,'r') as text_file:
for row in text_file:
hold_lines.append(row)
其次,您需要设置一种按名称创建新文件的方法!我建议一个循环和几个计数器:outer_count = 1
line_count = 0
sorting = True
while sorting:
count = 0
increment = (outer_count-1) * 300
left = len(hold_lines) - increment
file_name = "small_file_" + str(outer_count * 300) + ".txt"
第三,在该循环中,需要一些嵌套循环,这些循环将正确的行保存到数组中:hold_new_lines = []
if left < 300:
while count < left:
hold_new_lines.append(hold_lines[line_count])
count += 1
line_count += 1
sorting = False
else:
while count < 300:
hold_new_lines.append(hold_lines[line_count])
count += 1
line_count += 1
最后,同样在第一个循环中,您需要写入新文件并添加上一个计数器增量,这样您的循环将再次遍历并写入新文件outer_count += 1
with open(file_name,'w') as next_file:
for row in hold_new_lines:
next_file.write(row)
注意:如果行数不能被300整除,则最后一个文件的名称将与最后一个文件行不对应。
理解这些循环的工作原理很重要。您设置了它,以便在下一个循环中,您编写的文件的名称更改,因为您的名称依赖于更改的变量。这是一个非常有用的脚本工具,用于文件访问、打开、编写、组织等
如果您无法跟踪what循环中的内容,那么下面是整个函数:my_file = 'really_big_file.txt'
sorting = True
hold_lines = []
with open(my_file,'r') as text_file:
for row in text_file:
hold_lines.append(row)
outer_count = 1
line_count = 0
while sorting:
count = 0
increment = (outer_count-1) * 300
left = len(hold_lines) - increment
file_name = "small_file_" + str(outer_count * 300) + ".txt"
hold_new_lines = []
if left < 300:
while count < left:
hold_new_lines.append(hold_lines[line_count])
count += 1
line_count += 1
sorting = False
else:
while count < 300:
hold_new_lines.append(hold_lines[line_count])
count += 1
line_count += 1
outer_count += 1
with open(file_name,'w') as next_file:
for row in hold_new_lines:
next_file.write(row)