Python3重命名文件由tkinter列表框

时间:2018-04-25 12:48:39

标签: python-3.x tkinter listbox


我想通过tkinter listbox重命名目录中的所有文件。

此时陷入困境:

files_list = os.listdir(root.foldername)
print(files_list)

给了我

['1.mp4', '10.mp4', '2.mp4', '3.mp4', '4.mp4', '5.mp4', '6.mp4', '7.mp4', '8.mp4', '9.mp4']

values = [listbox.get(idx) for idx in listbox.curselection()]<br>

inlist = (', '.join(values))<br>
print(inlist)

给了我

Lost - 1x01 - Pilot(1), Lost - 1x02 - Pilot(2), Lost - 1x03 - Tabula Rasa, Lost - 1x04 - Walkabout, Lost - 1x05 - White Rabbit, Lost - 1x06 - House Of The Rising Sun, Lost - 1x07 - The Moth, Lost - 1x08 - Confidence Man, Lost - 1x09 - Solitary, Lost - 1x10 - Raised By Another

现在我正在寻找使用os.rename的解决方案,以便将文件重命名为1.mp4到10.mp4。 此外,无论出于何种原因,Python都没有内置的自然排序方式,因此它排序1.mp4,然后是10.mp4。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

对于自然分类,请查看Sorting alphanumeric strings in Python

然后遍历所有文件并重命名,例如

for i in range(len(files_list)):
    old_file_name = files_list[i]
    new_file_name = values[i] + '.mp4'
    os.rename(old_file_name, new_file_name)

有关处理路径名的帮助,请参阅os.path