Python:读取数百万个文件并创建一个
好的,我从以下几点开始:这不是一个经常要做的过程,我不在乎过一段时间(但我需要它完成,不需要几天),并且必须使用Python 我需要阅读200万个html文件(4kb)并进行检查,只需一次,我就可以用python创建一个更快的程序(我今天学习python:/) 好吧,我想当我用数百万的htm来运行它时,所有的htm都会爆炸,我的整个办公室都会死掉。有什么小建议吗? 我完全不懂Python,但我认为我更难用javascript:P创建它 编辑: 我解释了我的问题对不起:p 这是打开文件的最佳方式吗? 我对Python不太了解,并且理解“files”var可能有巨大的大小(不知道是保存的值还是仅引用),需要读取数百万个文件 打开Writer并在整个程序中保持打开状态?他每次写的时候都会保存,如果程序失败,他会丢失所有的东西吗Python:读取数百万个文件并创建一个,python,file,file-io,Python,File,File Io,好的,我从以下几点开始:这不是一个经常要做的过程,我不在乎过一段时间(但我需要它完成,不需要几天),并且必须使用Python 我需要阅读200万个html文件(4kb)并进行检查,只需一次,我就可以用python创建一个更快的程序(我今天学习python:/) 好吧,我想当我用数百万的htm来运行它时,所有的htm都会爆炸,我的整个办公室都会死掉。有什么小建议吗? 我完全不懂Python,但我认为我更难用javascript:P创建它 编辑: 我解释了我的问题对不起:p 这是打开文件的最佳方式吗
很抱歉给您带来不便您正在使用readlines创建
2000000
不必要的列表,您还需要将名称加入路径,您有8 Gig的数据,因此除非您在my_logic()
中进行大量工作,否则不会花费几天时间
path = './files/'
files = glob.glob(path)
with open('myfile.txt', 'a+') as writer:
for name in glob.glob(path + "*.html"):
try:
with open(os.path.join(path, name)) as f: # join path and filename
for line in f: # iterate over file object
result = my_logic()
writer.write(result) #Concatenated string
except IOError as e:
print(e)
不,它不会爆炸,你一次处理一个文件,一次处理一行,我不认为这会对系统造成多大影响。问题是什么?除了结果
没有在任何地方定义之外,我觉得很好。运行它,看看它是否有效-它可能不会爆炸。如果你知道你的代码有效,并且你只是想总体上改进它,试着继续问下去。我解释了更多我的问题,对给你带来的不便表示抱歉,并感谢你的回答:你应该将你的工作分成更多的进程,以利用多核体系结构。确切的解决方案显然取决于可用的数据,但就我所见,此操作完全是数据并行的。
path = './files/'
files = glob.glob(path)
with open('myfile.txt', 'a+') as writer:
for name in glob.glob(path + "*.html"):
try:
with open(os.path.join(path, name)) as f: # join path and filename
for line in f: # iterate over file object
result = my_logic()
writer.write(result) #Concatenated string
except IOError as e:
print(e)