Как я могу изменить на цикл в то время как в нем? - PullRequest
0 голосов
/ 24 июня 2018
for x in file.readlines():
    something()

Я думаю, что этот код кэширует все строки при запуске цикла. Я удаляю некоторые строки из файла, но они все еще повторяют удаленные строки. Как я могу изменить цикл, находясь в нем?

def wanted(s,d):
    print("deneme = " + str(s))
    count = 0
    total = 0
    TG_count = TC_count = TA_count = GC_count = CC_count = CG_count = GG_count = AA_count = AT_count = TT_count = CT_count = AG_count = AC_count = GT_count = 0
    for x in range(d,fileCount):
        print(str(x+1) + 'st file processing...')
        searchFile = open(str(x) + '.txt',encoding = 'utf-8',mode = "r+")
        l = searchFile.readlines()
        searchFile.seek(0)
        for line in l:
            if s in line[:12]:
                blabla()
            else:
                searchFile.write(line)
        searchFile.truncate()
        searchFile.close()

for p in range(fileCount):
  searchFile = open(str(p) + '.txt',encoding = 'utf-8',mode = "r+")
  for z in searchFile.readlines():
      wanted(z[:12],p)
  print("Progressing file " + str(p) + " complete")

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Может быть, вы найдете соответствующую информацию в Python tutorial .Он говорит:

Если вы хотите прочитать все строки файла в списке, вы также можете использовать list (f) или f.readlines ().Так что да, все строки читаются и сохраняются в памяти.

Также в руководстве говорится:

f.readline () читает одну строку из файла;Более подробную информацию можно найти в руководстве .

0 голосов
/ 24 июня 2018

Я думаю, это Python.Да, readlines() читает весь файл одновременно.Во избежание этого вы можете использовать:

for x in file:
    something()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...