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
"""
可以看到,此时就有输出结果了。
如果大家觉得有用,就请点个赞吧~