I'm using python 2.7

Here is my code to parse files in a folder

import linecache
import glob
path = r"G:\test\folder1"
Key = '''testresult="NOK"'''
Files = glob.glob(path+'\*.xml')
for FileName in Files:
    Loop_Count = 1
    while Loop_Count!= 50:
        Line_Read = linecache.getline(FileName, Loop_Count)
        if (Key in Line_Read):
            a = FileName.split('\\')
            b = len(a)-1
            print a[b]
            break
        elif(Loop_Count == 49):
            pass
        Loop_Count = Loop_Count+1
print "Completed"

if folder1 has many files, i'm getting memory error

Traceback (most recent call last):
  File "C:\Users\whoKnows\Desktop\test_Check111.py", line 10, in <module> Line_Read = linecache.getline(FileName, Loop_Count)
  File "C:\Python27\lib\linecache.py", line 14, in getline
lines = getlines(filename, module_globals)
  File "C:\Python27\lib\linecache.py", line 40, in getlines
return updatecache(filename, module_globals)
  File "C:\Python27\lib\linecache.py", line 128, in updatecache
lines = fp.readlines()
MemoryError

I think its because i'm opening all the files for reading and i'm not closing them. Can anyone please tell me how to close the files While using glob.

有帮助吗?

解决方案

MemoryError means you have run out of memory. You are probably loading all the files into the memory at once. Try deleting lines not needed anymore with linecache.clearcache().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top