Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我需要有关类的帮助-用于显示文件名、文件大小、路径和其他任何内容的类_Python_File_Class - Fatal编程技术网

Python 我需要有关类的帮助-用于显示文件名、文件大小、路径和其他任何内容的类

Python 我需要有关类的帮助-用于显示文件名、文件大小、路径和其他任何内容的类,python,file,class,Python,File,Class,好的,我有一个巨大的文件列表,我想从一个地方复制到另一个地方。我想创建一个类来存储所有这些数据。我希望能够调用两个类实例,一个在一个驱动器中有文件,另一个在另一个驱动器中有文件。然后我得到大小,不管另一个驱动器是否有类似的文件,等等,然后复制所有内容。我不知道我是否需要fileName类,或者我是否可以将所有这些都放在文件名中。有什么建议或提示吗?我有大概的想法吗,还是我的想法太离谱了 到目前为止,这就是我所拥有的一切(课程对我来说是一个艰难的概念性飞跃) 另一种方法是:您需要一个类来表示单个文

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

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


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

fileName
是一个糟糕的名称选择,因为类代表的不仅仅是文件名。将其称为
文件
也是一个坏主意,因为这是一个用于实际读取文件的内置对象的名称。:)

有单独的“名称”和“路径”字段是多余的:名称是路径的一部分。除非您想显式地将其拆分,否则请使用
os.path.split

不必为文件数据创建一个完整的类,您可以尝试改用
命名的tuple
——这样可以省去编写所有类的麻烦,只需开始引用文件的
.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
函数。

相反:您希望类表示单个文件的数据,而不是类表示一组数据。为此,您只需创建一个普通列表,并将文件数据实例放入该列表中。您可以使用普通函数创建这些列表

fileName
是一个糟糕的名称选择,因为类代表的不仅仅是文件名。将其称为
文件
也是一个坏主意,因为这是一个用于实际读取文件的内置对象的名称。:)

有单独的“名称”和“路径”字段是多余的:名称是路径的一部分。除非您想显式地将其拆分,否则请使用
os.path.split

不必为文件数据创建一个完整的类,您可以尝试改用
命名的tuple
——这样可以省去编写所有类的麻烦,只需开始引用文件的
.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
函数