关于拆分大文件的问题

时间:2010-07-08 20:29:36

标签: python

嘿我需要将python中的大文件拆分成只包含特定行的较小文件。我该怎么做?

4 个答案:

答案 0 :(得分:5)

你可能想要做这样的事情:

big_file = open('big_file', 'r')
small_file1 = open('small_file1', 'w')
small_file2 = open('small_file2', 'w')

for line in big_file:
    if 'Charlie' in line: small_file1.write(line)
    if 'Mark' in line: small_file2.write(line)

big_file.close()
small_file1.close()
small_file2.close()

打开要读取的文件会返回一个对象,该对象允许您遍历这些行。然后,您可以根据需要检查每一行(只是该行所包含的字符串),然后将其写入您为写入而打开的相应文件。值得注意的是,当您使用“w”打开文件时,它将覆盖已写入该文件的任何内容。如果你想简单地添加到最后,你应该用'a'打开它来附加。

此外,如果您希望在读/写代码中出现错误,并且想要确保文件已关闭,您可以使用:

with open('big_file', 'r') as big_file:
    <do stuff prone to error>

答案 1 :(得分:1)

你的意思是把它分解成小节吗?就像我有第1章,第2章和第3章的文件一样,您希望将它分解为每章的单独文件吗?


我这样做的方式类似于Wilduck的响应,但是一旦读入数据就关闭输入文件并保持读取所有行。

data_file = open('large_file_name', 'r')
lines = data_file.readlines()
data_file.close()

outputFile = open('output_file_one', 'w')
for line in lines:
    if 'SomeName' in line:
        outputFile.write(line)

outputFile.close()

如果您想拥有多个输出文件,可以添加更多循环或一次打开多个outputFile。

但是,我建议使用Wilducks响应,因为它占用的空间更少,文件只读取一次所需的时间更少。

答案 2 :(得分:0)

在python中需要做多大?如果这是在unix上,会拆分/ csplit / grep吗?

答案 3 :(得分:0)

首先,打开大文件进行阅读。

其次,打开所有较小的文件名进行书写。

第三,遍历每一行。每次迭代,检查它是什么类型的行,然后将其写入该文件。

有关文件I / O的更多信息:http://docs.python.org/tutorial/inputoutput.html