我需要帮助类显示文件名,文件大小,路径等

2024-03-29 04:48:06 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我有一个巨大的文件列表,我想从一个地方复制到另一个地方。我想创建一个类来存储所有这些数据。我希望能够调用两个类实例,一个在一个驱动器中有文件,另一个在另一个驱动器中有文件。然后我得到大小,是否其他驱动器有类似的文件等,然后复制所有内容。我不知道我是否需要fileName类,或者我是否可以把这些都放在fileNames中。有什么提示吗?我有大概的想法吗,还是说我离目标太远了?你知道吗

到目前为止,这就是我所拥有的一切(课程对我来说是一个艰难的概念性飞跃)

class fileNames:
    def __init__(self):
        fileSizeList = []
        filePathList = []
        fileList = []
        fileNameList.apped(fileName.name)
        fileSizeList.append(fileName.size)
        filePathList.append(fileName.path)

    def makeSizeList(fileList):
        for name in fileList:
            fileSizeList.append(os.path.getsize(os.path.join(name.path, name))))


class fileName:
    def __init__(self, name, path, size):
        self.name = name
        self.path = path
        self.size = size

Tags: 文件pathnameselfsizeinitdef地方
1条回答
网友
1楼 · 发布于 2024-03-29 04:48:06

另一种方法是:你想要一个类来表示一个文件的数据,而不是一个类来表示一堆数据。为此,您只需创建一个普通列表,并将文件数据实例放在该列表中。您可以使用普通函数来创建这些列表。你知道吗

fileName是一个糟糕的名称选择,因为类代表的不仅仅是文件名。称之为file也是一个坏主意,因为这是一个内置的东西的名字,你用它来实际读取文件。:)

有单独的“name”和“path”字段是多余的:名称是路径的一部分。除非您想显式地拆分它—为此,请使用os.path.split。你知道吗

您可以尝试使用namedtuple来代替为文件数据创建一个完整的类,这样可以省去编写所有类的麻烦,并且只需要开始引用文件的.path.size即可。你知道吗

比如:

from collections import namedtuple
# We define our data type like this:
fileData = namedtuple('fileData', ('name', 'path', 'size'))

# Now we can create an instance of it:

def pathToData(pathAndName):
    path, name = os.path.split(pathAndName)
    size = os.path.getsize(pathAndName)
    return fileData(name, path, size)

# Or a whole bunch at once, using a list comprehension:
def pathsToData(filePaths):
    return [pathToData(p) for p in filePaths]
    # There is no need to do all the 'append' logic yourself.

要处理包含子文件夹和其他内容的目录树,应该查找os.walk函数。你知道吗

相关问题 更多 >