gpt4 book ai didi

python - 如何使用现有名称的一部分在 Python 中重命名多个文件?

转载 作者:行者123 更新时间:2023-12-01 07:25:52 24 4
gpt4 key购买 nike

我的目录中有数百个 .mp4 文件。最初创建时,它们的名称被设置为“ExampleEventName - Day 1”、“ExampleEventName - Day 2”等,因此它们不按时间顺序排列。

我需要一个脚本来修改每个名称,方法是获取相应字符串中的最后 5 个字符并将其添加到名称的前面,以便文件资源管理器能够正确排列它们。

我尝试在 for 循环内使用 os 模块 .listdir() 和 .rename() 函数。根据我的输入,我得到 FileNotFoundError 或 TypeError:List 对象不可调用。


import os
os.chdir("E:\\New folder(3)\\New folder\\New folder")


for i in os.listdir("E:\\New folder(3)\\New folder\\New folder"):
os.rename(i, i[:5] +i)

Traceback (most recent call last):
File "C:/Python Projects/Alex_I/venv/Alex_OS.py", line 15, in <module>
os.rename(path + i, path + i[:6] +i)
FileNotFoundError: [WinError 2] The system cannot find the file specified:

import os, shutil

file_list = os.listdir("E:\\New folder(3)\\New folder\\New folder")

for file_name in file_list("E:\\New folder(3)\\New folder\\New folder"):
dst = "!@" + " " + str(file_name) #!@ meant as an experiment
src = "E:\\New folder(3)\\New folder\\New folder" + file_name
dst = "E:\\New folder(3)\\New folder\\New folder" + file_name

os.rename(src, dst)
file_name +=1

Traceback (most recent call last):
File "C:/Python Projects/Alex_I/venv/Alex_OS.py", line 14, in <module>
for file_name in file_list("E:\\New folder(3)\\New folder\\New folder"):
TypeError: 'list' object is not callable

最佳答案

其他一些方法:不基于基本长度(子名称为 5)

import glob
import os

# For testing i created 99 files -> asume last 5 chars but this is wrong if you have more files
# for i in range(1, 99):
# with open("mymusic/ExampleEventName - Day {}.mp4".format(i), "w+") as f:
# f.flush()

# acording to this i will split the name at - "- Day X"

files = sorted(glob.glob("mymusic/*"))

for mp4 in files:
# split path from file and return head ( path ), tail ( filename )
head, tail = os.path.split(mp4)
basename, ext = os.path.splitext(tail)
print(head, tail, basename)
num = [int(s) for s in basename.split() if s.isdigit()][0] #get the number extracted
newfile = "{}\\{}{}{}".format(head, num, basename.rsplit("-")[0][:-1], ext) # remove - day x and build filename
print(newfile)
os.rename(mp4, newfile)

关于python - 如何使用现有名称的一部分在 Python 中重命名多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com