关于拆分大文件的问题

0 投票
4 回答
584 浏览
提问于 2025-04-16 01:00

嘿,我想用Python把一个大文件分成几个小文件,每个小文件里只包含特定的行。我该怎么做呢?

4 个回答

0

这个东西有多大?一定要用Python来做吗?如果是在Unix系统上,使用split、csplit或者grep这些工具可以解决问题吗?

1

你是说把它分成几个小部分吗?比如说我有一个文件,里面有第一章、第二章和第三章,你希望把每一章分成单独的文件吗?


我做这个的方法和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()

如果你想要多个输出文件,你可以添加更多的循环,或者同时打开多个输出文件。

不过我建议你使用Wilduck的回答,因为这样占用的空间更少,对于大文件来说,读取的时间也会更短,因为文件只读取一次。

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>

撰写回答