📅  最后修改于: 2023-12-03 15:34:13.913000             🧑  作者: Mango
在 Python 中,我们可以使用 os 模块帮助我们遍历目录,获取文件信息,判断文件类型等等。
我们可以使用 os.walk() 来遍历指定目录及其子目录下的所有文件和子目录。
import os
def list_files(path):
for root, dirs, files in os.walk(path):
print(f'在 {root} 中的文件:')
for file in files:
print(f' {file}')
print(f'在 {root} 中的子目录:')
for dir in dirs:
print(f' {dir}')
# 遍历当前目录下的所有文件和子目录
list_files('.')
运行结果:
在 . 中的文件:
Test1.txt
Test2.txt
在 . 中的子目录:
subdir1
subdir2
在 ./subdir1 中的文件:
Test3.txt
在 ./subdir1 中的子目录:
subdir3
在 ./subdir1/subdir3 中的文件:
Test5.txt
在 ./subdir2 中的文件:
Test4.txt
注意,os.walk() 会递归遍历目录下的所有目录和文件。
我们可以使用 os.path 模块来获取文件的各种信息,如文件大小,修改时间等等。
import os
import datetime
def get_file_info(filepath):
basename = os.path.basename(filepath)
size = os.path.getsize(filepath)
create_time = datetime.datetime.fromtimestamp(os.path.getctime(filepath)).strftime('%Y-%m-%d %H:%M:%S')
modify_time = datetime.datetime.fromtimestamp(os.path.getmtime(filepath)).strftime('%Y-%m-%d %H:%M:%S')
isdir = os.path.isdir(filepath)
print(f'文件名:{basename}')
print(f'大小:{size} bytes')
print(f'创建时间:{create_time}')
print(f'修改时间:{modify_time}')
if isdir:
print(f'这是一个目录')
else:
print(f'这是一个文件')
# 获取 Test1.txt 的信息
get_file_info('Test1.txt')
运行结果:
文件名:Test1.txt
大小:21 bytes
创建时间:2022-03-25 11:22:05
修改时间:2022-03-25 11:22:05
这是一个文件
os.path 模块中也提供了一些函数来判断文件类型,如 isdir() 判断是否是目录,isfile() 判断是否是文件等等。
import os
def check_file_type(filepath):
if os.path.isdir(filepath):
print(f'{filepath} 是一个目录')
elif os.path.isfile(filepath):
print(f'{filepath} 是一个文件')
else:
print(f'{filepath} 不存在或者不是一个合法的文件或者目录')
# 判断 Test1.txt 的类型
check_file_type('Test1.txt')
运行结果:
Test1.txt 是一个文件
以上就是 Python 中迭代目录的一些基本操作。我们可以根据自己的需要,参考以上示例代码进行扩展和修改。