为了账号安全,请及时绑定邮箱和手机立即绑定

Python 函数 os.listdir 不显示目录中的所有文件

Python 函数 os.listdir 不显示目录中的所有文件

慕妹3146593 2022-10-11 21:14:09
我正在尝试加载几个文件,os.listdir但它会跳过几个文件。directiy文件格式为:a_0.csva_1.csva_2.csv  ·  ·  ·a_25.csv但os.listdir唯一的文件0,1,10,11.. 编号为3,4,5...的文件不在输出对象中。这是我的功能:def best_fit_from_attemp(self):    arr =[]    for i in os.listdir(self.path_to_files):        print("i",i)        if i[0] == 'f' and  i[1] == 'i' and i[2] == 't':            print("searching for smallest number... ",i)            arr.append(self.find_min_fitness(i))输出:i fitness_gen_0.csvsearching for smallest number...  fitness_gen_0.csvi fitness_gen_1.csvsearching for smallest number...  fitness_gen_1.csvi fitness_gen_10.csvsearching for smallest number...  fitness_gen_10.csvi fitness_gen_11.csvsearching for smallest number...  fitness_gen_11.csv
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

我的猜测是文件名都在那里,只是没有按照您期望的顺序。

文件名是字符串。它们根据字符串排序逻辑进行排序:想象将每个 0 替换为a ,将a每个 1 替换为 a b,将每个 2 替换为 ac等等,现在考虑如何按字母顺序对字符串进行排序。普通的字符串排序不知道我们喜欢用最不重要的数字last来写数字。在普通的字符串排序中,它确实是1, then 10, then 11——这类似于对字符串b, then ba, then进行排序bb,这是正确的字典排序。它会持续很长时间才能到达任何以开头3的单词(类似地,字典中以开头的单词d比以b)。

您可以研究执行“自然排序”的算法/包。或者,更可取的最佳做法是简单地修复文件命名约定:确保文件名中嵌入的数字都具有相同的位数,必要时使用前导零(001002等)。


查看完整回答
反对 回复 2022-10-11
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

这似乎值得怀疑。


self.find_min_fitness(i)

好吧,我建议你尝试这样的事情。


下面的目录包含编号的文件列表。


files = os.listdir("C:/Users/Danish/Documents/JavaScriptPrimerRepo/MyJSCodes")


for i in files:

    print(i)

这是下面的示例输出。


00_BlankPage.html

01_DataType.html

02_LinkingExternalJsfile.html

02_Script.js

03_VariableMutation_cohersion.html

04_Operators.html

05_SampleCodeCalculatingBMI.html

注意:我在迭代之前将结果存储在单独的变量中,重要的是 fileName 首先以数字开头。


查看完整回答
反对 回复 2022-10-11
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我很确定问题出在函数self.find_min_fitness(i)上。在列出前几个文件后,其中的某些部分必须导致程序中断。

文件按名称排序os.listdir()。它优先12列出文件时,这就是为什么所有以开头的文件名1都首先列出的原因。

作为解决方案:也许尝试注释掉self.find_min_fitness(i)调用的这一行,看看问题是否仍然存在


查看完整回答
反对 回复 2022-10-11
  • 3 回答
  • 0 关注
  • 519 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号