spr*_*ssd 10 python python-2.7
我正在尝试检查文件夹是否为空,并执行以下操作:
import os
downloadsFolder = '../../Downloads/'
if not os.listdir(downloadsFolder):
print "empty"
else:
print "not empty"
Run Code Online (Sandbox Code Playgroud)
不幸的是,无论该文件夹中是否有文件,我总是会得到“不为空”的信息。是否因为可能存在一些隐藏的系统文件?有没有一种方法可以修改上面的代码以仅检查非隐藏文件?
小智 39
您可以使用os 模块中的这两种方法。
第一个选项:
import os
if len(os.listdir('/your/path')) == 0:
print("Directory is empty")
else:
print("Directory is not empty")
Run Code Online (Sandbox Code Playgroud)
第二个选项(作为空列表False在 Python 中的计算结果):
import os
if not os.listdir('/your/path'):
print("Directory is empty")
else:
print("Directory is not empty")
Run Code Online (Sandbox Code Playgroud)
但是,os.listdir()可以抛出异常,例如当给定的路径不存在时。因此,您需要涵盖这一点。
import os
dir_name = '/your/path'
if os.path.isdir(dir_name):
if not os.listdir(dir_name):
print("Directory is empty")
else:
print("Directory is not empty")
else:
print("Given directory doesn't exist")
Run Code Online (Sandbox Code Playgroud)
我希望它会对你有所帮助。
Fla*_*air 16
从 Python 3.5+ 开始,
if any(os.scandir(path)):
print('not empty')
Run Code Online (Sandbox Code Playgroud)
这通常执行的速度比listdir(),因为scandir()是一个迭代器,不使用某些功能来获取给定文件的统计信息。
嗯,我只是尝试过您的代码将路径更改为空目录,并且确实为我打印了“空”,因此您的下载文件中一定有隐藏文件。您可以尝试循环浏览所有文件,并检查它们是否以“。”开头。或不。
编辑:
尝试这个。它为我工作。
if [f for f in os.listdir(downloadsFolder) if not f.startswith('.')] == []:
print "empty"
else:
print "not empty"
Run Code Online (Sandbox Code Playgroud)
正如穆斯卡亚 在这里提到的。从 Python 3.4(标准库)开始,您还可以使用pathlib 。但是,如果您只想检查文件夹是否为空,则应该查看此答案:
from pathlib import Path
def directory_is_empty(directory: str) -> bool:
return not any(Path(directory).iterdir())
downloadsFolder = '../../Downloads/'
if directory_is_empty(downloadsFolder):
print "empty"
else:
print "not empty"
Run Code Online (Sandbox Code Playgroud)
小智 7
试一试:
import os
dirContents = os.listdir(downloadsFolder)
if len(dirContents) == 0:
print('Folder is Empty')
else:
print('Folder is Not Empty')
Run Code Online (Sandbox Code Playgroud)
小智 -5
在 python 操作系统中,有一个名为 的函数listdir,它返回给定目录的文件内容的数组。所以如果数组为空,则意味着目录中没有文件。
这是一个代码片段;
import os
path = '../../Downloads'
if not os.listdir(path):
print "Empty"
else:
print "Not empty"
Run Code Online (Sandbox Code Playgroud)
希望这就是您正在寻找的。
| 归档时间: |
|
| 查看次数: |
12071 次 |
| 最近记录: |