如何重命名Python 3中表示为字符串的部分文件名

时间:2017-07-27 13:58:28

标签: python python-3.x

我想用新名称重命名/替换部分字符串。

我有一个表示文件的字符串,包括其路径和文件扩展名,如下所示。

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

2 个答案:

答案 0 :(得分:2)

  1. 使用os.path.split将您的路径分为头尾。

  2. os.path.splitext将分尾拖尾,用新的uuid替换尾巴

  3. 致电os.path.join加入头部和新尾部

  4. 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))