使用Python复制Bash命令'ls -a'的输出结果。

10

我是Python的新手,正在尝试用Python编写bash的ls命令,但卡在了ls -a选项上。根据manpage的说明:

包括以点('。')开头的目录条目

我知道os.listdir()函数,但它不会列出特殊条目'.'和'..'。

从文档中了解到:os.listdir(path):

返回包含由路径给定的目录中条目的名称列表。列表没有固定顺序。即使这些特殊条目在目录中存在,它们也不包括在内。

我需要帮助通过Python列出这些特殊条目,请有经验的人在这里给我一些帮助。

感谢大家耐心阅读。


是的,那是一个选项,感谢您的输入。 - APZ
那么,没有办法通过Python获取这些特殊条目吗? - APZ
2
看起来不是这样。您可以使用常量os.curdiros.pardir来获取这些特殊目录的名称,而不是硬编码它们。 - Barmar
如果没有给出 -a,请不要忘记排除以点号开头的条目,例如 result = [e for e in os.listdir(path) if not e.startswith('.')] - jfs
@J.F.Sebastian,是的,我正在努力处理ls -a选项中的特殊条目。 - APZ
1个回答

10

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

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


1
@user596374:不要混淆Unicode和字节字符串。你可以使用 curdir = lambda path: fsdecode(os.curdir) if isinstance(path, unicode) else os.curdir - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接