繁体   English   中英

os.listdir 打印的文件比命令 `ls` 多但少于 `ls -a`

[英]os.listdir print more files than command `ls` but less than `ls -a`

我想计算路径/Users/me/anaconda3/bin

In [3]: len(os.listdir("/Users/me/anaconda3/bin"))                                                            
Out[3]: 474

但是,当我检查命令时

In [5]: !count=0; for f in $(ls /Users/me/anaconda3/bin) ;do count=$(( $count + 1)); done; echo $count        
470

但是,如果检查所有文件:

In [17]: ls -a /Users/me/anaconda3/bin | wc -l                                                                
476

造成差异的原因是什么?

如果您阅读os.listdir的文档,这很容易

返回一个包含路径给定目录中条目名称的列表。 该列表按任意顺序排列,不包括特殊条目“.”。 和 '..' 即使它们存在于目录中。

这意味着 os.listdir 命令始终具有

no_of_elements_in(`ls -a`)-no_of_elements_in(".. and  .")

那是

len('os.listdir') =no_of_elements_in(`ls -a`)-2

在你的情况下474=476-2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM