我想知道是否有一种方法可以自动创建日期并将文件重命名为它。我用它编码了一点,但后来我出错了。错误为FileNotFoundError:[WinError 2]系统找不到指定的文件:“AutoDateRename”。其中AutoDateRename是我希望重命名文件进入的文件夹的名称。有办法做到这一点吗? 完全错误是:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\lucio\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "c:/Users/lucio/Documents/PythonWorkspace/FileAutoDateRename/script.py", line 21, in RenameDateCreated
os.rename(rf'{E1_Val.get()}/{filename}',rf'{E1_Val.get()}/AutoDateRename/{time.ctime(os.path.getctime(filename))}')
File "C:\Users\lucio\AppData\Local\Programs\Python\Python38-32\lib\genericpath.py", line 65, in getctime
return os.stat(filename).st_ctime
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'AutoDateRename'
我的代码:
from tkinter import *
from tkinter import filedialog
import os.path, time
import os
window = Tk()
window.title("File Auto Date Rename")
window.geometry("500x300")
window.resizable(width=False,height=False)
E1_Val = StringVar()
def SelectFolder():
window.filename = filedialog.askdirectory()
E1.delete(0,"end")
E1.insert(END,window.filename)
def RenameDateCreated():
os.mkdir(f'{E1_Val.get()}/AutoDateRename')
for filename in os.listdir(E1_Val.get()):
os.rename(rf'{E1_Val.get()}/{filename}',rf'{E1_Val.get()}/AutoDateRename/{time.ctime(os.path.getctime(filename))}')
L1 = Label(text="Auto Date Rename",font='Helvetica 16 bold underline')
L1.pack()
L2 = Label(text="Folder Path",font='Helvetica 12 bold italic')
L2.pack(pady=5)
E1 = Entry(window,textvariable=E1_Val)
E1.pack(pady=5)
B1 = Button(window,text="Locate",height=1,width=5,command=SelectFolder)
B1.pack(pady=5)
L4 = Label(text="Rename Options",font='Helvetica 12 bold italic')
L4.pack(pady=5)
B2 = Button(window,text="Rename Using Date Created",height=1,width=25,command=RenameDateCreated)
B2.pack(pady=2)
B3 = Button(window,text="Rename Using Date Modified",height=1,width=25)
B3.pack(pady=2)
L5 = Label(text="Make sure that the folder you\nare converting is backed up in a safe location!",font='Helvetica 14 bold')
L5.pack(pady=15)
window.mainloop()
由于您在源目录(由
E1_Val.get()
返回)中创建了一个目录AutoDateRename
,因此它将包含在由os.listdir()
返回的列表中,我认为您不想重命名它。因此,您应该检查源文件是否是文件而不是目录而
os.path.getctime(filename)
应该是os.path.getctime(os.path.join(E1_Val.get(), filename))
另外
time.ctime()
可能会返回包含文件名中不允许使用的字符(如:
)的字符串。请使用time.strftime()
将时间格式化为有效文件名以下是更新的
RenameDateCreated()
:相关问题 更多 >
编程相关推荐