Python:创建一个类以读取目录中的文件

4 投票
3 回答
4767 浏览
提问于 2025-04-17 13:24

我正在自学如何在Python中创建类。目前我能写一个类,能够让我用同一个类画出多种形状,这个功能比较基础。

不过,我在使用类做一些更高级的任务时遇到了困难。例如,我想创建一个类,可以包含一些功能,比如查看某个文件夹里有多少个文件。

我想问的是,怎么才能创建一个类,让它能读取一个文件夹,并告诉我里面有多少个文件呢?

谢谢,抱歉如果我说得不太清楚。

3 个回答

1

使用一个类来解决这个问题似乎有点过于复杂,但这可以作为一个起点:

import os

class DirectoryLister(object):
    def __init__(self, *args):
        self.directory = os.listdir(*args)

    @property
    def count(self):
        return len(self.directory)

用法如下:

dl = DirectoryLister('/home/jon')
print dl.directory
print dl.count

你可能还想提供其他参数来过滤掉不是文件的内容,或者可以考虑使用 glob 来进行通配符匹配等等……

1

os.listdir() 是一个用来获取文件夹内容的函数,它会返回一个列表,里面列出了这个文件夹里的所有东西。如果我理解你的问题没错的话。

所以,如果你想为这个函数创建一个新的类,那么这个类可以包含一个函数的封装。至于你说的“读取一个文件夹”的意思,我不是很明白。

class YourClass:

    def __init__(self):
         #initialize here

    def countFilesInDir(self,directory):
         return len(os.listdir(directory))

或者类似的东西

1

你要找的函数是 os.listdir

假设你有一个文件夹 /tmp/foo,里面有两个文件,分别叫 barbaz

>>> import os
>>> os.listdir('/tmp/foo')
['baz', 'bar']

当你使用 os.listdir 时,你还需要用到 os.path.isfile 来检查你处理的每个条目是否真的是一个文件,因为这个函数也会返回文件夹的名字。

撰写回答