如何列出某个目录下的所有文件

2023-02-27 09:54 31次浏览 攻略

1.现象

获取文件系统目录下所有文件的列表

2.原因分析

没有3。解决问题

使用Os.listdir函数获取目录中文件的列表

Import OS

prin()# ' e : code python cookbook chapter 4 '

Os.chdir(' '))

prin()# ' e : code python cookbook '

Prin('/chapter4 '))

单击“”

['merged_file ''''''“sorted _ file _ 0”,“sorted _ file _ 1”,“sorted _ file _ 2”,“sorted _ file”

4 '' sorted_file_5']

Os.listdir函数返回目录中所有文件的列表,包括所有文件、子目录、符号链接等。

如果需要以某种方式过滤数据,可以结合os.path库中的某些函数使用列表派生

Names=[name for name in os.listdir('/chapter 4') if os。('/chapter 4 'name)]

dir _ names=[name for name in OS . listdir('/chapter 4') if os。('/chapter 4 'name))

py _ names=[name for name in OS . listdir('/chapter 4 ')if name . endswith(' py ')]

单击“”

[''''']。

可以考虑使用glob或fnmatch模块进行文件名匹配

Glob模块使用Unix通配符规则来匹配特定模式的路径名

Import glob

#相对路径

Py _ pattern=glob.glob('/chapter4/*。py') # py _ pattern与py_files匹配

#绝对路径

py _ ab _ pattern=glob . glob(' e : code python cookbook chapter 4 *。py') # py

py _ files=[name for name in py _ pattern]

单击“”

[’./chapter 4 ;'/chapter 4 ;'/chapter 4 ;'/chapter 4 ;'/chapter 4 ;]。

单击“”

py _ ab _ files=[name for name in py _ ab _ pattern]

单击“”

[' e : code python cookbook chapter 4 ;' e : code python cookbook chapter 4 ;' e : code python cookbook chapter 4 ;' e : code python cookbook chapter 4 ;' e : code python cookbook chapter 4 ;]。

' fnmatch模块支持UNIX shell格式的通配符

Import fnmatch

py _ files=[name for name in OS . listdir('/chapter 4') if (name,' *。py')]

单击“”

类'列表'[''''']。

“”可以轻松地从目录中获取列表,但仅返回目录中的实体名称列表

如果需要获取其他元信息(如文件大小、修改时间等),则必须使用os.path模块中的函数或os.stat函数收集数据。

Import glob

Import time

Import OS

Py _ pattern=glob.glob('/chapter4/*。py ')

Py _ meta=[(名称,os。(名称),操作系统。(名称))for name in py _ pattern]

For name、size和mtime in py _ meta :

打印(name、size、(mtime))

单击“”

./chapter 4 1460 sat oct 9 22:14336052 2021

./chapter 4 1663 sun oct 10 17:01:04 2021

./chapter 4 1276 monoct 11 22:07:16 2021

./chapter 4 1902 sat oct 23 17:0:45 2021

./chapter 4 2733 sat oct 23 21:42336016 2021

单击“”

Print('#### ')

File _ meta=[(名称,os.stat(名称))for name in py _ pattern]

For name,meta in file_meta:

打印(name、me、me)

单击“”

./chapter4 1460 16378892.536979

./chapter 4 1663 1633856464.6744094

./chapter 4 1276163961236.9767005

./chapter 4 1902 1634979825.0937288

./chapter 4 2709 1634996395.330934

最后需要注意的是,在处理文件名编码问题时可能会出现问题。

通常来讲,函数os.listdir函数返回的实体列表会根据系统默认的文件名编码来解码。有时候会碰到一些不能正常解码的文件名,需要我们进行特殊处理。

import os
import sys
import locale

os.chdir('..')
print(type('pyx;)) # '<class 'str'>'
prin()) # 'utf-8'
prin()) # 'cp936'

# encoding 默认编码 cp936
with open('pyx;, 'w') as f_obj:
('Python!')

prin('.'))
"""
['.idea', 'chapter2', 'chapter3', 'chapter4', 'Chapter_1', 'data', 'main.py', 'models', 'notebooks', 'pyòx.txt', 'README.md', 'requiremen;]
"""
prin(b'.'))
"""
[b'.idea', b'chapter2', b'chapter3', b'chapter4', b'Chapter_1', b'data', b'main.py', b'models', b'notebooks', b'pyxc3xb2x.txt', b'README.md', b'requiremen;]
"""
with open(b'pyxc3xb2x.txt', 'r') as f_obj:
prin())
"""
Python!
"""

4. 错误经历

相关推荐