📜  python 迭代目录 - Python (1)

📅  最后修改于: 2023-12-03 15:34:13.913000             🧑  作者: Mango

Python 迭代目录

在 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 中迭代目录的一些基本操作。我们可以根据自己的需要,参考以上示例代码进行扩展和修改。