Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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_Python 2.7_Loops_Nested - Fatal编程技术网

Python 嵌套循环未获得所需的输出

Python 嵌套循环未获得所需的输出,python,python-2.7,loops,nested,Python,Python 2.7,Loops,Nested,我正试图让这个嵌套循环为一个更大的程序工作。这只是我代码的一小部分 我希望我的程序将文件夹中的文件名与文本文档中的文件名匹配,如果匹配,则执行某些操作。我不知道为什么下面的嵌套循环不起作用 allGood = open("allGood.txt", "r") folder = "C:\your\folder\path\here" for item in allGood: for file in os.listdir(folder): if file == item:

我正试图让这个嵌套循环为一个更大的程序工作。这只是我代码的一小部分

我希望我的程序将文件夹中的文件名与文本文档中的文件名匹配,如果匹配,则执行某些操作。我不知道为什么下面的嵌套循环不起作用

allGood = open("allGood.txt", "r")
folder = "C:\your\folder\path\here"

for item in allGood:
    for file in os.listdir(folder):

        if file == item:
            print "in item loop" + item
            print "Do a thing"
    print "1 loop completed"
“allGood.txt”的内容

问题是当它到达IF语句时。每个循环应该只匹配一次,但它不匹配。我只得到了“1个循环完成”的巨大输出

插入
打印输出(文件、项目)


我现在明白我的问题了

我没有足够的声誉来评论,所以我将尝试一个信息不足的答案。基本上,你从来没有比赛过。这就是为什么你从未进入第二个循环

是否考虑将文件名处理为集合?:< /P>

real_files = set(os.listdir(folder))
good_files = set(open("allGood.txt", "r").readlines())

matching_files = good_files.intersection(real_files)
for file in matching_files:
    pass # do something
此外,文本文件条目可能包含空格;考虑使用“条”,例如:

import string
...
good_files = set(map(string.strip, open("allGood.txt", "r").readlines()))
...
或者稍微少一点“Perl语言”;-)


我没有足够的声誉来评论,所以我会尝试一个信息不足的答案。基本上,你从来没有比赛过。这就是为什么你从未进入第二个循环

是否考虑将文件名处理为集合?:< /P>

real_files = set(os.listdir(folder))
good_files = set(open("allGood.txt", "r").readlines())

matching_files = good_files.intersection(real_files)
for file in matching_files:
    pass # do something
此外,文本文件条目可能包含空格;考虑使用“条”,例如:

import string
...
good_files = set(map(string.strip, open("allGood.txt", "r").readlines()))
...
或者稍微少一点“Perl语言”;-)


记住,allGood是一个文件句柄,而不是文件内容。也许你需要的是这样的东西:

folder = os.listdir("C:\your\folder\path\here")

with open("allGood.txt", "r") as allGood:
    for line in allGood:
        line = line.strip()
        if line in folder:
        ...

记住,allGood是一个文件句柄,而不是文件内容。也许你需要的是这样的东西:

folder = os.listdir("C:\your\folder\path\here")

with open("allGood.txt", "r") as allGood:
    for line in allGood:
        line = line.strip()
        if line in folder:
        ...

请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。@Prune那么您希望我添加“文件夹”对象吗?我还遗漏了什么?你的第二个文件夹是做什么用的?它没有定义anywhere@SPYBUG96:正如我所说,张贴应该是独立的。输入文件丢失,并且返回的os.listdir与您的需要不匹配。对这些列表进行硬编码,您应该会很好。@SPYBUG96欢迎来到智人俱乐部,我通常称之为
H.Sap。
在那里,这样做可以从T恤衫上制作足球场大小的旗帜。请阅读并遵循帮助文档中的张贴指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。@Prune那么您希望我添加“文件夹”对象吗?我还遗漏了什么?你的第二个文件夹是做什么用的?它没有定义anywhere@SPYBUG96:正如我所说,张贴应该是独立的。输入文件丢失,并且返回的os.listdir与您的需要不匹配。对这些列表进行硬编码,你会没事的。@SPYBUG96欢迎加入智人俱乐部,我通常称之为
H.Sap。
到过那里,这样做,可以从T恤衫上制作一个足球场大小的旗帜。我正要建议这个策略——干得好。顺便说一句,缺乏声誉不是发表评论作为回答的借口。不过,这可以作为一个答案。是的,我度过了漫长的一天,我完全忘记了ThanksI刚刚要提出的这个策略——干得好。顺便说一句,缺乏声誉不是发表评论作为回答的借口。不过,这也算是一个回答。是的,我度过了漫长的一天,我完全忘记了这一点。谢谢