Python os.path.isfile() 和 os.path.isdir() 函数

发布于:2024-05-30 ⋅ 阅读:(102) ⋅ 点赞:(0)

Python os.path.isfile 和 os.path.isdir 函数

正文

在网上看到很多人对这两个函数的用法有过说明,然而感觉都没有说到它们的本质,这里特来记录一下。os.path.isfile() 用来判断所给参数是否一个文件。os.path.isdir() 用来判断所给的参数是否是一个文件夹。可能说道这里,大家都觉得很简单啊,这不一下子学会了吗?事实可能并非如此,我们来看一个例子。

考虑以下情况,在一个根目录下存放着一个 Data 文件夹和 Data.csv 文件。我们使用 Python数据处理,使用 tkinter 模块点击获取文件目录 文中给出的方法选中这个根目录。
在这里插入图片描述

import os
from tkinter.filedialog import askdirectory

directory_ = askdirectory()
items = os.listdir(directory_)
print(items)
for item in items:
    if os.path.isfile(item):
        print(item)
    if os.path.isdir(item):
        print(item)
"""
result:
['Data', 'Data.csv']
"""

输出结果部分 for 循环中的两个 if 均没有被执行,这不应该啊,明明有一个文件夹和文件的,为什么判断后的输出没有结果呢?这是因为,根据上面 os.listdir() 的结果,得到的仅仅是 ['Data', 'Data.csv'],即文件和文件夹的名称,并不包含文件和文件夹的目录,os.path.isfile()os.path.isdir() 中的 path 已经说明了,它们需要将文件和文件夹都放在完整的目录下才能判断。 因此,我们需要对上述代码稍作改动。

import os
from tkinter.filedialog import askdirectory

directory_ = askdirectory()
items = os.listdir(directory_)
for item in items:
    if os.path.isfile(os.path.join(directory_, item)):
        print(item)
    if os.path.isdir(os.path.join(directory_, item)):
        print(item)
"""
result:
Data
Data.csv
"""

可以看到,此时就有输出结果了。

如果大家觉得有用,就请点个赞吧~


网站公告

今日签到

点亮在社区的每一天
去签到