我想用新名称重命名/替换部分字符串。
我有一个表示文件的字符串,包括其路径和文件扩展名,如下所示。
source_file = 'images/filename.jpg'
下面显示了到目前为止我尝试过的内容。然而,它是否有更好的方法来产生相同的结果?我通过更短的语法定义'更好',效率更高。
import uuid
source_file = 'images/filename.jpg'
split = source_file.rsplit('/', 1)
path, filename = split[0], split[1]
ext = filename.rsplit('.', 1)[1]
# rebuild
renamed = path + str(uuid.uuid4()) + ext
答案 0 :(得分:2)
使用os.path.split
将您的路径分为头尾。
os.path.splitext
将分尾拖尾,用新的uuid替换尾巴
致电os.path.join
加入头部和新尾部
In [1006]: head, tail = os.path.split('images/full_res/aeb2ffaf-2c4c-4c54-a356-fd0df7764222.jpg')
In [1008]: tail = str(uuid.uuid4()) + os.path.splitext(tail)[-1]
In [1010]: os.path.join(head, tail)
Out[1010]: 'images/full_res/a83e5a31-8d30-47d9-b073-d4439e0e4b2f.jpg'
答案 1 :(得分:1)
您可以采用pathlib方法作为查看它并使用新的真棒模块的替代方法。
因此,您可以走自己的路径并从中创建一个Path
对象:
from pathlib import Path
p = Path('images/full_res/aeb2ffaf-2c4c-4c54-a356-fd0df7764222.jpg')
# get the name without extension
name_without_extension = p.stem
# extension part
ext = p.suffix
p.rename(Path(p.parent, renamed_file + ext))
更多信息:
p = Path('images/full_res/aeb2ffaf-2c4c-4c54-a356-fd0df7764222.jpg')
p.rename(Path(p.parent, 'new_uuid' + p.ext))