【问题标题】:How can I change for loop while in it?如何在其中更改 for 循环?
【发布时间】:2018-06-24 11:28:44
【问题描述】:
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")

【问题讨论】:

  • 这是什么语言?
  • Python.........
  • 然后把它作为你问题的标签。
  • 运行此代码时会出现错误,在这种情况下也发布错误消息,或者您没有正确粘贴代码,在这种情况下请发布您实际使用的代码.
  • 我粘贴了所有必需的部分,我认为我的问题并不难。我希望我能得到帮助而不是负面反馈。

标签: python loops for-loop


【解决方案1】:

我猜是 Python。是的,readlines() 一次读取整个文件。为了避免这种情况,您可以使用:

for x in file:
    something()

【讨论】:

  • @Tuğberk - 你需要提供一个minimal reproducible example 来显示这些行是如何被删除的以及你期望发生什么。还包括一个源文件。
  • 我添加了........如您所见,我从文件中删除了行。我的循环包含行,我想在运行循环时更改它们。
【解决方案2】:

也许您可以在Python tutorial 中找到相应的信息。它说

如果要读取列表中文件的所有行,也可以使用 list(f) 或 f.readlines()。 所以是的,所有行都被读取并存储在内存中。

手册上还说:

f.readline() 从文件中读取一行; 更多详情请见manual

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多