在Python3中将文件扩展名从.tar.gz更改为.tgz

时间:2019-02-06 14:48:13

标签: python-3.x pathlib

使用set,有一个简单的解决方案,可以将带有两个后缀(如“ .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

此问题与pathlib相关,但不相同

3 个答案:

答案 0 :(得分:1)

是否需要使用路径库?

如果没有,则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)))

答案 1 :(得分:0)

您可以重命名。

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)

答案 2 :(得分:0)

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