gpt4 book ai didi

python - 在 python 中读取 bz2 文件的第一行

转载 作者:太空狗 更新时间:2023-10-30 01:50:33 24 4
gpt4 key购买 nike

我正在尝试从 bz2 文件中提取 10'000 行。

   import bz2       
file = "file.bz2"
file_10000 = "file.txt"

output_file = codecs.open(file_10000,'w+','utf-8')

source_file = bz2.open(file, "r")
count = 0
for line in source_file:
count += 1
if count < 10000:
output_file.writerow(line)

但我得到一个错误“‘模块’对象没有属性‘打开’”。你有什么想法?或者我可以通过其他方式将 10'000 行保存到 txt 文件中吗?我在 Windows 上。

最佳答案

这是一个完整的示例,其中包括编写和读取一个比您的 10000 行小得多的测试文件。很高兴在问题中有工作示例,这样我们就可以轻松测试。

import bz2
import itertools
import codecs

file = "file.bz2"
file_10000 = "file.txt"

# write test file with 9 lines
with bz2.BZ2File(file, "w") as fp:
fp.write('\n'.join('123456789'))

# the original script using BZ2File ... and 3 lines for test
# ...and fixing bugs:
# 1) it only writes 9999 instead of 10000
# 2) files don't do writerow
# 3) close the files

output_file = codecs.open(file_10000,'w+','utf-8')

source_file = bz2.BZ2File(file, "r")
count = 0
for line in source_file:
count += 1
if count <= 3:
output_file.write(line)
source_file.close()
output_file.close()

# show what you got
print('---- Test 1 ----')
print(repr(open(file_10000).read()))

一种更有效的方法是在阅读所需行后跳出 for 循环。您甚至可以像这样利用迭代器来精简代码:

# a faster way to read first 3 lines
with bz2.BZ2File(file) as source_file,\
codecs.open(file_10000,'w+','utf-8') as output_file:
output_file.writelines(itertools.islice(source_file, 3))

# show what you got
print('---- Test 2 ----')
print(repr(open(file_10000).read()))

关于python - 在 python 中读取 bz2 文件的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37172679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com