Python 列表迭代问题

标签 python windows

我很难弄清楚我在 Windows 中运行我的 python 脚本以获得预期结果时做错了。

我有一个包含 list1.txt、list2.txt、list3.txt、list4.txtlist5.txt 的目录。每个列表都包含唯一的单独的行字符串,例如 list1.txt 将在单独的行上将 item1、item2、item3、item4 item5 作为值。然后 list2.txt 将在不同的行上有 item6-item10 等等。

我需要做的是,对于此目录中的每个文本文件,列出 list1 中的每个值直到完成,然后列出 list2 中的每个值,然后是 list3,依此类推,直到完成最后一个列表。

这是带有注释的结果图片的链接:https://i.imgur.com/YBxQUqi.png

下面是我的代码,但结果不是我所期望的,我很难确定我在这里做错了什么。

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step

for x in my_range(1, 5, 1):
   import os
   rootdir = os.getcwd()
   fis = rootdir + "\list\list" + str(x) + ".txt"
   files = open(fis,'rU')
   lines = files.readlines()
   print(lines)
   print(fis)
for line in lines:
        print("Item = " + line)

我需要从 lists.txt 文件中的每个文件和每个文件中的每个值读取结果,而不仅仅是最后一个文件。我想我没有正确地嵌套 for 循环,我就是想不通。我还测试了将参数传递给函数并定义了一个函数来执行此操作,并且我完全控制了尝试该操作的脚本。

如果你能解决这个问题,请任何人帮助我,我无法弄清楚,只是把我的头发从头上拉下来。

最佳答案

您的第二个 for 循环需要是第一个循环的子循环。还有,不要每次循环都import os,只做一次。您的代码应如下所示:

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step
import os
for x in my_range(1, 5, 1):
    rootdir = os.getcwd()
    fis = rootdir + "\list\list" + str(x) + ".txt"
    files = open(fis,'rU')
    lines = files.readlines()
    print(lines)
    print(fis)
    for line in lines:
        print("Item = " + line)

但是,我认为您应该使用 with open(fid,'rU') as f: 方法,因为如果代码出错或崩溃,这将使文件免于锁定.然后你可以做这样的事情:

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step
import os
for x in my_range(1, 5, 1):
    rootdir = os.getcwd()
    fis = rootdir + "\list\list" + str(x) + ".txt"
    with open(fis,'rU') as files:
        print(fis)
        for line in files:
            print("Item = " + line)

关于Python 列表迭代问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169214/

相关文章:

python - 为什么joblib.Parallel()比非并行计算花费更多的时间? Parallel()的运行速度是否应该比非并行计算快?

python - 每个赛季篮球队/比赛/得分的数据库。表结构

python - 如何在特定时间暂停或停止 python 程序(不基于耗时!)

python - App Engine devserver 查询过滤器不起作用

windows - gl_FragDepth 断色

windows - 在 for 循环中初始化的批处理文件变量

windows - ZMQ::LibZMQ3 和草莓 perl

python - Sphinx 待办事项框未显示

c++ - 为外部 DLL 设置 OMP 线程数

c++ - 如何将击键发送到 C++ 中的应用程序