我有一个文件,我正试图从中提取信息,该文件中包含信息,并且采用整齐的逐行格式,信息以逗号分隔。
我想把它放在一个列表中,或者尽我所能从一个特定的索引中提取信息。该文件很大,超过 1000000000 行,我必须在每一行中提取相同的索引才能获得相同的信息。这些是我想要从文件中提取的散列,所以我想知道如何根据长度找到所有出现的散列。
import os
os.chdir('C:\HashFiles')
f = open('Part1.txt','r')
file_contents=f.readlines()
def linesA():
for line in file_contents:
lista = line.split(',')
print linesA()
这就是我到目前为止所拥有的一切,它只是将所有内容都放在一个列表中,我可以从中索引,但是我想将这些索引中的数据输出到另一个文件,但由于 for 语句,我无法做到,怎么办我绕过这个?
哇,你们太棒了,现在我遇到了一个问题,因为在存储此信息的文件中,它以提供信息的赞助商的信息开头,我如何绕过这些行从另一行开始,因为我需要从文件下方大约 100 行开始,以帮助我,因为目前我遇到索引错误并且无法弄清楚如何设置条件来应对它。我试过这个条件但没有工作:if line[:] != 15: continue
最近使用的代码:
导入csv
with open('c:/HashFiles/search_engine_primary.sql') as inf, open('c:/HashFiles/hashes.txt','w') as outf:
for i in xrange(47):
inf.next() # skip a line
for line in inf:
data = line.split(',')
if str(line[0]) == 'GO':
continue
hash = data[15]
outf.write(hash + '\n')
请您参考如下方法:
您可以尝试逐行处理文件
with open('Part1.txt') as inf:
for line in inf:
# do your processing
# ... line.split(',') etc...
而不是使用 readlines() 将所有数据一次读入内存。
另外,取决于你在做什么,list comprehension可能有助于从您正在阅读的文件中创建所需的输出列表。
注意:使用 with 打开文件的好处是,当您完成或遇到异常时,它会自动关闭。 p>
更新:
要跳过输入文件的前 N 行,您可以将代码更改为:
N = 100
with open('Part1.txt') as inf:
for i, line in enumerate(inf, 1):
if i < N: # if line is less than N
continue # skip the processing
print line # process the line
我正在使用 enumerate()自动生成行号。我从 1 开始这个计数器(如果未指定,默认值为 0)。
