python 文件名更改
python file name change
我正在尝试更改文件名,如下所示:
000000 是相同的数字。
000000_ABC.png --->000000+1_ABC.png
000000_DEF.png --->000000+2_DEF.png
000000_GHI.png --->000000+3_GHI.png
000000_JKL.png --->000000+4_JKL.png
为此,我编写了如下代码。
img_files = os.listdir(PATH_TO_PNG_FILES)
for img_file, i in zip(img_files, range(len(img_files))):
new_img_file = img_file.replace("_", "+"+str(i)+"_")
os.rename(path + img_file, path + new_img_file)
不止四个文件,还有更多类似的行。
问题是在 运行ning pycharm 之后,它成功地产生了想要的结果,但是在我 运行 另一个与结果目录相关的页面之后,结果继续像下面这样改变过程完成后。我不明白为什么。
000000+1+1_ABC.png
000000+2+2_DEF.png
000000+3+3_GHI.png
000000+4+4_JKL.png
or
otherwise "+unexpected number"
一个简单而幼稚的方法是添加一个验证来检查文件名中是否有'+'。如果您有其他可能包含 + 的文件,您可能需要检查更严格的模式。
这是因为其他目录可能已经包含格式为“000000+1_ABC.png”的文件,而您的脚本正在将 _ 更改为“+1_”,导致“000000+1+[=13=” ]”。要解决这个问题,您可以添加一个 if 语句来检查它不应包含“+”符号。
img_files = os.listdir(path inside of which the png files are saved)
for img_file, i in zip(img_files, range(len(img_files))):
if not ("+" in img_file):
new_img_file = img_file.replace("_", "+"+str(i)+"_")
os.rename(path + img_file, path + new_img_file)
我制作了一个 YouTube 视频https://youtu.be/K9jhAPZLZLc,内容是关于如何重命名多个文件,就像您假设所有文件都在同一目录中一样。
回答你的问题。假设所有图像文件都在同一个文件夹中。
path = 'C:\Users\USER\Desktop\rename_images\images\' # path to your images
files = os.listdir(path)
for count, filename in enumerate(files):
# Get the file extension
file, file_extension = os.path.splitext(filename)
# check if the current file is a folder or not
full_path = f'{path}{filename}'
if os.path.isdir(full_path):
print('This is a directory')
elif os.path.isfile(full_path):
print('This is a normal file')
# Rename
if not '+' in file:
try:
file_split = file.split('_')
zeros = file_split[0]
alpha = file_split[-1]
current_file_name = os.path.join(path, filename)
new_file_name = os.path.join(path, ''.join([f'{zeros}+{count}_{alpha}', file_extension]))
os.rename(current_file_name, new_file_name)
except:
pass
else:
pass
else:
print('This is a special file')
我想问题出在修改名称而不是覆盖。
import os
DIR_PATH = 'files'
def rename_files(dir_name):
img_files = os.listdir(dir_name)
for i in range(len(img_files)):
file_name = img_files[i].split('_')[-1]
file_name = '000000+{0}_{1}'.format(i, file_name)
os.rename(
os.path.join(dir_name, img_files[i]),
os.path.join(dir_name, file_name)
)
if __name__ == '__main__':
rename_files(DIR_PATH)
我正在尝试更改文件名,如下所示: 000000 是相同的数字。
000000_ABC.png --->000000+1_ABC.png
000000_DEF.png --->000000+2_DEF.png
000000_GHI.png --->000000+3_GHI.png
000000_JKL.png --->000000+4_JKL.png
为此,我编写了如下代码。
img_files = os.listdir(PATH_TO_PNG_FILES)
for img_file, i in zip(img_files, range(len(img_files))):
new_img_file = img_file.replace("_", "+"+str(i)+"_")
os.rename(path + img_file, path + new_img_file)
不止四个文件,还有更多类似的行。 问题是在 运行ning pycharm 之后,它成功地产生了想要的结果,但是在我 运行 另一个与结果目录相关的页面之后,结果继续像下面这样改变过程完成后。我不明白为什么。
000000+1+1_ABC.png
000000+2+2_DEF.png
000000+3+3_GHI.png
000000+4+4_JKL.png
or
otherwise "+unexpected number"
一个简单而幼稚的方法是添加一个验证来检查文件名中是否有'+'。如果您有其他可能包含 + 的文件,您可能需要检查更严格的模式。
这是因为其他目录可能已经包含格式为“000000+1_ABC.png”的文件,而您的脚本正在将 _ 更改为“+1_”,导致“000000+1+[=13=” ]”。要解决这个问题,您可以添加一个 if 语句来检查它不应包含“+”符号。
img_files = os.listdir(path inside of which the png files are saved)
for img_file, i in zip(img_files, range(len(img_files))):
if not ("+" in img_file):
new_img_file = img_file.replace("_", "+"+str(i)+"_")
os.rename(path + img_file, path + new_img_file)
我制作了一个 YouTube 视频https://youtu.be/K9jhAPZLZLc,内容是关于如何重命名多个文件,就像您假设所有文件都在同一目录中一样。
回答你的问题。假设所有图像文件都在同一个文件夹中。
path = 'C:\Users\USER\Desktop\rename_images\images\' # path to your images
files = os.listdir(path)
for count, filename in enumerate(files):
# Get the file extension
file, file_extension = os.path.splitext(filename)
# check if the current file is a folder or not
full_path = f'{path}{filename}'
if os.path.isdir(full_path):
print('This is a directory')
elif os.path.isfile(full_path):
print('This is a normal file')
# Rename
if not '+' in file:
try:
file_split = file.split('_')
zeros = file_split[0]
alpha = file_split[-1]
current_file_name = os.path.join(path, filename)
new_file_name = os.path.join(path, ''.join([f'{zeros}+{count}_{alpha}', file_extension]))
os.rename(current_file_name, new_file_name)
except:
pass
else:
pass
else:
print('This is a special file')
我想问题出在修改名称而不是覆盖。
import os
DIR_PATH = 'files'
def rename_files(dir_name):
img_files = os.listdir(dir_name)
for i in range(len(img_files)):
file_name = img_files[i].split('_')[-1]
file_name = '000000+{0}_{1}'.format(i, file_name)
os.rename(
os.path.join(dir_name, img_files[i]),
os.path.join(dir_name, file_name)
)
if __name__ == '__main__':
rename_files(DIR_PATH)