【问题标题】:Use python to reproduce bash command 'ls -a' output使用 python 重现 bash 命令 'ls -a' 输出
【发布时间】:2013-12-15 02:53:02
【问题描述】:

我是 python 新手,正在用 python 编写 bash ls 命令,我被困在 ls -a 选项上(根据手册页):

包括名称以点 (`.') 开头的目录条目

我知道 os.listdir() 但它没有列出特殊条目 '.'和'..'

来自文档:os.listdir(path):

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

我需要帮助来通过 python 列出这些特殊条目,如果有人可以在这里帮助我,我将不胜感激。

感谢大家的耐心等待。

【问题讨论】:

  • 是的,这是一个选项,感谢您的输入
  • 那么有没有办法通过python获取这些特殊的条目?
  • 看起来不像。您可以使用常量os.curdir 和os.pardir 来获取这些特殊目录的名称,而不是对它们进行硬编码。
  • 如果没有给出-a,不要忘记排除以点开头的条目,例如result = [e for e in os.listdir(path) if not e.startswith('.')]
  • @J.F.Sebastian 是的,我一直在努力处理 ls -a 选项特殊条目。

标签: python linux bash


【解决方案1】:

只需手动将它们添加到os.listdir() 结果。 result = [os.curdir, os.pardir] + os.listdir(path).

大多数现代文件系统不再创建实际的硬链接,但所有 API 都明确包含名称。

【讨论】:

  • @user596374:不要混合使用 Unicode 和字节串。你可以使用curdir = lambda path: fsdecode(os.curdir) if isinstance(path, unicode) else os.curdir
猜你喜欢
  • 2015-08-11
  • 2017-02-06
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2016-06-18
  • 2015-06-19
相关资源
最近更新 更多