Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制对大文件的搜索_Python - Fatal编程技术网

Python 限制对大文件的搜索

Python 限制对大文件的搜索,python,Python,这是我的程序,有一些新的修改: datafile = open('C:\\text2.txt', 'r') completedataset = open('C:\\bigfile.txt', 'r') smallerdataset = open('C:\\smallerdataset.txt', 'w') matchedLines = [] for line in datafile: splitline = line.split() for item in splitline:

这是我的程序,有一些新的修改:

datafile = open('C:\\text2.txt', 'r')
completedataset = open('C:\\bigfile.txt', 'r')
smallerdataset = open('C:\\smallerdataset.txt', 'w')
matchedLines = []
for line in datafile:
    splitline = line.split()
    for item in splitline:
        if not item.endswith("NOVA"):
            if item.startswith("JJJ") or item.startswith("KOS"):
                matchedLines.append( item )
counter = 1
for line in completedataset:
    print counter
    counter +=1
    for t in matchedLines:
        if t in line:
            smallerdataset.write(line)
datafile.close()
completedataset.close()
smallerdataset.close()
我现在遇到的问题是,我想以更快的速度搜索大文件。我想将对bigfile中每一行的搜索限制为在第一个“,”之前出现的字符串


我想使用像index=aString.find、'我相信,但是我没有太多的运气将大文件的搜索限制在第一个逗号之前的字符串

对于拆分问题,您可以限制拆分行的次数:

first_item = str.split(",",maxsplit=1)[0]
你可以改变

if t in line:

如果行非常长,并且逗号出现在开头附近,这可能会使程序更快。或者,如果出现在行尾附近,可能会使程序变慢

附言:每一行都保证有逗号吗?如果没有逗号,上面的代码就有点古怪。比如说,

In [21]: line='a line of text'

In [22]: line[:line.find(',')]
Out[22]: 'a line of tex'
如果要忽略不带逗号的行,这可能更好:

In [23]: line[:line.find(',')+1]
Out[23]: ''

这可能有助于加快速度…很抱歉没有标签

数据文件=打开'C:\\text2.txt','r' completedataset=open'C:\\bigfile.txt','r' smallerdataset=打开'C:\\smallerdataset.txt','w' 匹配行=[] 计数器=1 对于datafile.readlines中的行: 如果线[-4:::==NOVA: 如果第[:3]==JJJ行或第[:3]==KOS行: 计数器+=1 对于completedataset中的compline: 如果行在compline中: smallerdataset.writeline datafile.close completedataset.close smallerdataset.close

In [23]: line[:line.find(',')+1]
Out[23]: ''