为赏金问题添加答案;在一个单一的命令中获得隐藏文件和非隐藏文件的结果。
正如@reducidng activity所提到的,glob将.文件视为特殊情况。为了在单个循环中获取常规文件和隐藏文件,我们可以使用itertools.chain
与glob.iglob
迭代器。例如,
→ ls -A
.chen file.text so1.py
>>> import glob, itertools
>>> for i in itertools.chain(glob.iglob('**'), glob.iglob('.**')):
... print(i)
...
file.text
so1.py
.chen
# If you want it as a variable, you can list() it.
>>> l = list(itertools.chain(glob.iglob('**'), glob.iglob('.**')))
>>> l
['file.text', 'so1.py', '.chen']
>>>
注意:它目前尚未完全运作。假设您有
.hello
,
.dot/hello.txt
,
.dot/.hello.txt
,
nodot/hello.txt
和
nodot/.hello.txt
,那么这两个都不行:
itertools.chain(glob.iglob('**', recursive=True), glob.iglob('.**', recursive=True))
nor
itertools.chain(glob.iglob('**/*', recursive=True), glob.iglob('.**/*', recursive=True))
给出所有文件。
Path.rglob()
是否具有相同的行为... - pepoluan