代码求助
from pathlib import Pathfrom time import strftime, localtime
class File:
def __init__(self, name, size, folder, ctime, mtime, atime):
self.name = name
self.size = size
self.folder = folder
self.ctime = ctime
self.mtime = mtime
self.atime = atime
def get_name(self):
return self.name
def get_size(self):
return f"{self.size} 字节"
def get_folder(self):
return f"位置:{self.folder}"
def get_ctime(self):
return f"创建时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.ctime))}"
def get_mtime(self):
return f"修改时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.mtime))}"
def get_atime(self):
return f"访问时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.atime))}"
def get_file_msg(path):
p = Path(path)
paths = []
files = []
# 利用glob()函数找出指定路径下的所有文件
for each in p.glob("**/*"):
paths.append(each)
if each.is_file():
name = each.name
size = each.stat().st_size
folder = each.parent.resolve()
ctime = each.stat().st_ctime
mtime = each.stat().st_mtime
atime = each.stat().st_atime
files.append(File(name, size, folder, ctime, mtime, atime))
print("路径结构如下:")
for each in paths:
print(each)
return files
请问这里的'each.name’为什么没有报错,each并未实例化为类对象
路径对象 `each` 是一个 `Path` 对象,来自 `pathlib.Path` 类。当你调用 `each.name` 时,实际上是调用了 `Path` 类的 `name` 属性。这个属性返回路径的最后一个组件,即文件名或目录名。因此没有报错。
顺便帮你把代码中遗漏的部分补充完整:
from pathlib import Path
from time import strftime, localtime
class File:
def __init__(self, name, size, folder, ctime, mtime, atime):
self.name = name
self.size = size
self.folder = folder
self.ctime = ctime
self.mtime = mtime
self.atime = atime
def get_name(self):
return self.name
def get_size(self):
return f"{self.size} 字节"
def get_folder(self):
return f"位置:{self.folder}"
def get_ctime(self):
return f"创建时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.ctime))}"
def get_mtime(self):
return f"修改时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.mtime))}"
def get_atime(self):
return f"访问时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.atime))}"
def get_file_msg(path):
p = Path(path)
paths = []# Initialize paths as a list
files = []# Initialize files as a list
# 利用glob()函数找出指定路径下的所有文件
for each in p.glob("**/*"):
paths.append(each)
if each.is_file():
name = each.name
size = each.stat().st_size
folder = each.parent.resolve()
ctime = each.stat().st_ctime
mtime = each.stat().st_mtime
atime = each.stat().st_atime
files.append(File(name, size, folder, ctime, mtime, atime))
print("路径结构如下:")
for each in paths:
print(each)
return files
请注意,我已补充了 `paths` 和 `files` 列表的初始化。在最后打印了路径结构,并返回 `files` 列表。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-2-13 16:39
路径对象 `each` 是一个 `Path` 对象,来自 `pathlib.Path` 类。当你调用 `each.name` 时,实际上是调用了...
from pathlib import Path
from time import strftime, localtime
class File:
def __init__(self, name, size, folder, ctime, mtime, atime):
self.name = name
self.size = size
self.folder = folder
self.ctime = ctime
self.mtime = mtime
self.atime = atime
def get_name(self):
return self.name
def get_size(self):
return f"{self.size} 字节"
def get_folder(self):
return f"位置:{self.folder}"
def get_ctime(self):
return f"创建时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.ctime))}"
def get_mtime(self):
return f"修改时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.mtime))}"
def get_atime(self):
return f"访问时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.atime))}"
def get_file_msg(path):
p = Path(path)
files = []
# 利用glob()函数找出指定路径下的所有文件
for each in p.glob("**/*"):
if each.is_file():
name = each.name
size = each.stat().st_size
folder = each.parent.resolve()
ctime = each.stat().st_ctime
mtime = each.stat().st_mtime
atime = each.stat().st_atime
files.append(File(name, size, folder, ctime, mtime, atime))
return files
这里为什么没有报错,'files.append(File(name, size, folder, ctime, mtime, atime))' ,类File不用进行实例化吗? andreahhhhhh 发表于 2025-02-13 17:02
FishC 发表于 2025-2-13 16:39
路径对象 `each` 是一 ...
在你的代码中,`File(name, size, folder, ctime, mtime, atime)` 这行代码实际上就是在实例化 `File` 类。调用类的构造函数并传递参数会创建一个新的 `File` 对象,然后将这个对象添加到 `files` 列表中。
然而,你的代码会报错,因为你没有初始化 `files` 列表。修改如下:
from pathlib import Path
from time import strftime, localtime
class File:
def __init__(self, name, size, folder, ctime, mtime, atime):
self.name = name
self.size = size
self.folder = folder
self.ctime = ctime
self.mtime = mtime
self.atime = atime
def get_name(self):
return self.name
def get_size(self):
return f"{self.size} 字节"
def get_folder(self):
return f"位置:{self.folder}"
def get_ctime(self):
return f"创建时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.ctime))}"
def get_mtime(self):
return f"修改时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.mtime))}"
def get_atime(self):
return f"访问时间:{strftime('%Y-%m-%d %H:%M:%S', localtime(self.atime))}"
def get_file_msg(path):
p = Path(path)
files = []# Initialize files as a list
# 利用glob()函数找出指定路径下的所有文件
for each in p.glob("**/*"):
if each.is_file():
name = each.name
size = each.stat().st_size
folder = each.parent.resolve()
ctime = each.stat().st_ctime
mtime = each.stat().st_mtime
atime = each.stat().st_atime
files.append(File(name, size, folder, ctime, mtime, atime))
return files
这样,`files` 列表就被正确地初始化,并可以存放 `File` 对象。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]