Измените расширение файла с.tar.gz на.tgz в Python3
Используя 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
Этот вопрос связан, но не идентичен изменению расширения файла в Python
3 ответа
Использование пути lib является обязательным требованием?
если нет, модуль 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))
РЕДАКТИРОВАТЬ:
нашел это в документации к path lib:
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)))
Вы можете переименовать его.
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)
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))