【发布时间】:2021-10-08 15:50:22
【问题描述】:
我正在使用 python,而且我非常新。我有一个包含数百个文件的文件夹,我已将它们的扩展名重命名为 jp、gi、jpe 和 mp。所以,我想遍历所有这些,根据它们的扩展名重命名它们。如果是 jp 则为 jpg,如果为 jpe 则为 jpeg,gif 为 gi,mp4 为 mp。我知道这很多,但是,我们将不胜感激!谢谢!
【问题讨论】:
标签: python operating-system rename
我正在使用 python,而且我非常新。我有一个包含数百个文件的文件夹,我已将它们的扩展名重命名为 jp、gi、jpe 和 mp。所以,我想遍历所有这些,根据它们的扩展名重命名它们。如果是 jp 则为 jpg,如果为 jpe 则为 jpeg,gif 为 gi,mp4 为 mp。我知道这很多,但是,我们将不胜感激!谢谢!
【问题讨论】:
标签: python operating-system rename
jp 然后 jpg,如果是 jpe 然后 jpeg,gif 代表 gi,mp4 代表 mp
你可以先这样创建一个字典:
extensions={'jp':'jpg','jpe':'jpeg','gi':'gif','mp':'mp4'}
然后导入os模块,并使用os.listdir(folder_path),后接os.rename()
import os
folder_path='/.../.../folder'
extensions={'jp':'jpg','jpe':'jpeg','gi':'gif','mp':'mp4'}
for i in os.listdir(folder_path):
paths=i.split('.') #==== Split the string based on the parameter
if extensions.get(paths[-1])!=None: #=== If a key is not present, it returns None. So if there is another file named .docx or .txt or a folder, it will return None.
os.rename(os.path.join(folder_path,i),os.path.join(folder_path,paths[0]+"."+extensions.get(paths[-1]))) #====os.path.join(folder_path,i) joins the folder path and file name
【讨论】:
您需要从所有“损坏”文件所在的目录启动此文件。不客气。
import os
from os import listdir
from os.path import isfile, join
# Get path to current dir
cwd = os.getcwd()
# Get all files in dir
onlyfiles = [f for f in listdir(cwd) if isfile(join(cwd, f))]
for file in onlyfiles:
# Get the current format
s = file.split(".")
br = s[-1]
if br == 'jp':
new = 'jpg'
elif br == 'gi':
new = 'gif'
elif br =='jpe':
new = 'jpeg'
else:
continue
# Change format and get new filename
s[-1] = new
s = '.'.join(s)
# Rename file
os.rename(file, s)
print(f"Renamed {file} to {s}")
【讨论】:
首先在“旧”和“新”扩展之间进行字典映射。从我能读到的(因为你有很多文件)你可能有扩展的完整性问题......也许是jjp 扩展?所以映射步骤非常重要......
其次,要重命名文件,请注意从文件系统中的哪个位置运行程序。这是一个基本的解决方案
import os
extensions = {'jp': 'jpg', 'jpg': 'jpeg', 'mp': 'mp4'}
def rename_files(dir_path, extensions):
files = os.listdir(dir_path)
for file in files:
for ext in extensions: # loop over the old extensions
if file.endswith(ext): # check the extension
file_new = '{}.{}'.format(os.path.splitext(file)[0], extensions[ext])
os.rename(os.path.join(dir_path, file_new)) # rename the files
print('{} --> {}'.format(file, file_new))
dir_of_the_files = '.'
rename_files(dir_of_the_files, extensions)
【讨论】: