我这样做是一种更容易理解的方式,并且使用更少的捷径,以便让您进一步了解它的工作原理和原因。以前的答案有效,但如果您不熟悉某些内置函数,您将无法理解该函数在做什么。
因为您没有发布任何代码,所以我决定这样做,因为您可能不熟悉基本 Python 语法以外的其他内容,因为您提出问题的方式使您看起来好像没有尝试过,也不知道如何处理问题
以下是在基本 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 整除,则最后一个文件的名称将与最后一个文件行不对应。
了解这些循环为何起作用很重要。您已将其设置为在下一个循环中,您编写的文件的名称会发生变化,因为您的名称取决于不断变化的变量。这是一个非常有用的脚本工具,用于文件访问、打开、写入、组织等。
如果您无法遵循循环中的内容,这里是整个函数:
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)