完全找不到bug到底在哪
from pathlib import Path
import time
f = Path.cwd()
q = f.iterdir()
dic = {}
time_ = []
print("当前路径:",f)
for each in q:
if each.is_file():
dic = dic
time_.append(each.stat().st_mtime)
time_ = sorted(time_)
name = dic]
print("修改时间->",time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_[-1])),"文件名->",name)
这是我的代码,首先将当前目录下的所有文件的修改时间和文件名存储至dic字典中,键为修改时间,文件名为值,并且将修改时间存储至列表time中,排序列表后time[-1]即为修改时间最大的值,通过这个值找到字典中的文件名
但是循环中的第一句(dic = dic)就报错,下面帖一下报错代码:
Traceback (most recent call last):
File "C:\Users\75574\Desktop\isPalindrome.py", line 10, in <module>
dic = dic
KeyError: 'Adobe After Effects 2021.lnk'
这个keyerror百思不得其解啊,因为each.stat().st_mtime和each.name都是可以打印出来的,如下:
1675001335.939798
Adobe After Effects 2021.lnk
1674998012.653168
Adobe Illustrator 2021.lnk
1643424093.966148
Adobe Premiere Pro 2022.lnk
1679650589.6543558
CCtalk.lnk
1656213865.1332428
DeepL.lnk
1643335006.9238348
desktop.ini
1667559304.8656418
EV录屏.lnk
所以相当于键和值都是真,却返回key不存在的bug,有点头疼 首先,感谢您提供了详细的代码和错误信息。让我们一起来解决这个问题。
问题出在这一行代码:
dic = dic
这里的 dic 应该是 each.name 。因为您要将文件的修改时间作为键,文件名作为值。所以,您需要将这一行代码更改为:
dic = each.name
更正后的代码如下:
from pathlib import Path
import time
f = Path.cwd()
q = f.iterdir()
dic = {}
time_ = []
print("当前路径:", f)
for each in q:
if each.is_file():
dic = each.name
time_.append(each.stat().st_mtime)
time_ = sorted(time_)
name = dic]
print("修改时间->", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_[-1])), "文件名->", name)
这样,代码就应该可以正常运行了。希望这对您有所帮助! 问题出在这一句代码:
dic = dic
在第一次循环中,字典 dic 中是没有任何元素的。因此,你尝试使用 dic 作为 value 来赋值给 dic 的时候,因为 each.name 不存在于字典 dic 中而抛出 KeyError 异常。
此外,即使 dic 已经被初始化了,这一行代码仍然是错误的。你应该把 each.name 作为值,而不是作为键,因为你想要根据每个文件的修改时间来查找其名称。因此,你需要使用以下代码:
dic = each.name
这将把文件名作为值存储在字典 dic 中,使得每个 key(即修改时间)都对应着正确的文件名。
以下是更正后的代码:
from pathlib import Path
import time
f = Path.cwd()
q = f.iterdir()
dic = {}
time_ = []
print("当前路径:",f)
for each in q:
if each.is_file():
dic = each.name
time_.append(each.stat().st_mtime)
time_ = sorted(time_)
name = dic]
print("修改时间->", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_[-1])), "文件名->", name) 为什么不给我最佳?{:5_100:} isdkz 发表于 2023-4-29 10:44
为什么不给我最佳?
之前没看到你的帖子,等看到的时候想给已经晚了{:5_104:} 爱睡懒觉 发表于 2023-4-29 10:47
之前没看到你的帖子,等看到的时候想给已经晚了
好吧,问题不大{:5_97:}
页:
[1]