重命名文件,仅在d之后修改

2024-09-28 22:44:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想修改测试.tar.gz进入测试.tgz但它不起作用。命令如下:

temporalFolder= /home/albertserres/*.tar.gz
subprocess.call(["mv",temporalFolder,"*.tgz"])

它向我发送了一个错误:文件不存在。为什么?在

另外,我只需要在点后面修改,而不是整个名称,因为我可能不知道文件名,如果我做*.tgz,它会重命名文件*.tgz,我想保留原来的名称。在


Tags: 文件命令名称home文件名错误tarcall
3条回答

要将给定目录中的所有.tar.gz文件扩展名替换为.tgz文件扩展名(类似于@hitzg's answer):

#!/usr/bin/env python
from glob import glob

for filename in glob(b'/home/albertserres/*.tar.gz'):
    new = bytearray(filename)
    new[-len(b'tar.gz'):] = b'tgz'
    os.rename(filename, new) # or os.replace() for portability

代码只在名称末尾替换tar.gz。如果new是现有目录,则会引发一个错误,否则它会自动替换Unix上的文件。在

rename可能更容易。在

rename 's/\.tar\.gz/\.tgz/' *.tar.gz

对你来说

^{pr2}$

这应该是有效的:

import shutil

orig_file = '/home/albertserres/test.tar.gz'
new_file = orig_file.replace('tar.gz', 'tgz')
shutil.move(orig_file, new_file)

如果要对多个文件执行此操作:

^{pr2}$

相关问题 更多 >