os.listdir打印的文件多于命令“ ls”,但少于“ ls -a”

时间:2018-10-30 04:36:34

标签: python

我想计算路径/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

造成差异的原因是什么?

1 个答案:

答案 0 :(得分:1)

阅读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