我试图将test.tar.gz修改为test.tgz,但它没有用。这是命令:
temporalFolder= /home/albertserres/*.tar.gz
subprocess.call(["mv",temporalFolder,"*.tgz"])
它向我发送文件不存在的错误。为什么呢?
另外我只需要在点后修改,而不是整个名称,因为我可能不知道文件名,如果我做* .tgz它重命名文件* .tgz和我想保留原来的名字。
答案 0 :(得分:2)
rename
可能会更容易。
rename 's/\.tar\.gz/\.tgz/' *.tar.gz
在你的情况下
params = "rename 's/\.tar\.gz/\.tgz/' /home/albertserres/*.tar.gz"
subprocess.call(params, shell=True)
答案 1 :(得分:2)
这应该有效:
import shutil
orig_file = '/home/albertserres/test.tar.gz'
new_file = orig_file.replace('tar.gz', 'tgz')
shutil.move(orig_file, new_file)
如果您想为多个文件执行此操作:
import shutil
import glob
for orig_file in glob.glob('/home/albertserres/*.tar.gz'):
new_file = orig_file.replace('tar.gz', 'tgz')
shutil.move(orig_file, new_file)
答案 2 :(得分:1)
要用给定目录中的.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上静默替换该文件。