【问题标题】:Change file extension from .tar.gz to .tgz in Python3在 Python3 中将文件扩展名从 .tar.gz 更改为 .tgz
【发布时间】:2019-06-30 13:33:24
【问题描述】:

使用pathlib,是否有一个简单的解决方案可以将带有两个后缀(如“.tar.gz”)的文件扩展名更改为一个简单的后缀(如“.tgz”)。

目前我尝试过:

import pathlib

src = pathlib.Path("path/to/archive.tar.gz")
dst = src.with_suffix("").with_suffix(".tgz")
print(dst)

我明白了:

path/to/archive.tgz

这个问题与Changing file extension in Python相关但不完全相同

【问题讨论】:

    标签: python-3.x pathlib


    【解决方案1】:

    你可以重命名它。

    import os
    old_file = os.path.join("directory_where_file", "a.tar.gz") 
    new_file = os.path.join("directory_where_file", "b.tgz") 
    os.rename(old_file, new_file)
    

    【讨论】:

    • 不,使用 pathlib...
    【解决方案2】:

    是否需要使用路径库?

    如果没有,os 模块可以正常工作:

    import os
    
    path_location = "/path/to/folder"
    filename = "filename.extension"
    
    newname = '.'.join([filename.split('.')[0], 'tgz'])
    
    os.rename(os.path.join(path_location, filename), os.path.join(path_location, newname))
    

    编辑:

    在 pathlib 文档中找到了这个:

    PurePath.with_suffix(suffix)¶
    

    返回更改后缀的新路径。如果原始路径没有后缀,则会附加新的后缀。如果后缀为空字符串,则去掉原来的后缀:

    >>>
    >>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
    >>> p.with_suffix('.bz2')
    PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
    >>> p = PureWindowsPath('README')
    >>> p.with_suffix('.txt')
    PureWindowsPath('README.txt')
    >>> p = PureWindowsPath('README.txt')
    >>> p.with_suffix('')
    PureWindowsPath('README')
    

    编辑 2:

    from pathlib import Path
    p = Path('path/to/tar.gz')
    new_ext = "tgz"
    filename = p.stem
    p.rename(Path(p.parent,  "{0}.{1}".format(filename, new_ext)))
    

    【讨论】:

    • 不,使用 pathlib...
    • 其实这是我第一次尝试。
    • 在制作这张票之前了解您尝试的方法会很有帮助。尝试我的第二次编辑
    【解决方案3】:
    from pathlib import Path
    p = Path('path/to/tar.gz')
    name_without_ext = p.stem
    p.rename(Path(p.parent,  name_without_ext + '.' + new_ext))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2020-02-24
      • 2018-12-28
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多