dmyl 发表于 2021-2-28 21:15:52

求助,代码如图

import easygui as g
import os

msg = '请选择需要打开的文本文档'
title = '文档选择器'
choices = os.listdir('.')
print(choices)

for each_file in choices:
    print(each_file)
    if os.path.splitext(each_file) == '.txt':
      print(each_file)
    else:
      choices.remove(each_file)
print(choices)
g.choicebox(msg, title, choices)

代码如上,几个print()是为了检查问题写的,运行结果如下图
想问为什么两个.py 文件会被加进来,看print结果似乎choices列表里有几个元素根本就没进入循环?

dmyl 发表于 2021-2-28 21:16:52

粘贴一张图片就超长了,发不出来{:10_269:}

dmyl 发表于 2021-2-28 21:18:19

运行结果:
==============================================================================
['.txt.docx', 'a.txt', 'test.txt', 'why', 'xxx.py', '为什么.txt', '猜数字.py', '登记用户账号信息.py', '选择打开文本文件.py']
.txt.docx
test.txt
test.txt
why
为什么.txt
为什么.txt
猜数字.py
选择打开文本文件.py
['a.txt', 'test.txt', 'xxx.py', '为什么.txt', '登记用户账号信息.py']
=================================================================================

dmyl 发表于 2021-2-28 21:20:24

跪求大佬解答{:10_254:}

wp231957 发表于 2021-2-28 21:33:57

dmyl 发表于 2021-2-28 21:20
跪求大佬解答

在循环中删除列表元素狠不友好,会产生索引变化,会出现一些遗漏现象

dmyl 发表于 2021-2-28 21:42:15

wp231957 发表于 2021-2-28 21:33
在循环中删除列表元素狠不友好,会产生索引变化,会出现一些遗漏现象

原来如此,感谢解答{:10_282:}

dmyl 发表于 2021-2-28 21:48:58

wp231957 发表于 2021-2-28 21:33
在循环中删除列表元素狠不友好,会产生索引变化,会出现一些遗漏现象

不过我还是有点疑惑,看print的结果,几个.py文件应该是进入循环了,为什么没被if语句排除掉呢

wp231957 发表于 2021-2-28 21:55:43

dmyl 发表于 2021-2-28 21:48
不过我还是有点疑惑,看print的结果,几个.py文件应该是进入循环了,为什么没被if语句排除掉呢

应该更换思路或算法,而不要纠结这个问题
因为在循环中使用remove总是会产生一些莫名其妙的事情

dmyl 发表于 2021-2-28 22:33:53

wp231957 发表于 2021-2-28 21:55
应该更换思路或算法,而不要纠结这个问题
因为在循环中使用remove总是会产生一些莫名其妙的事情

彳亍
页: [1]
查看完整版本: 求助,代码如图