Python 用不同的扩展名保存文件

Python save file with different extension

我知道 Python 中的 os.path.splitext(file) 函数,但这会更改现有文件的扩展名。我需要将原始文件及其扩展名保留为读取文件,并创建另一个具有另一个扩展名的文件作为写入文件。 例如:

A = "File.inp"
pre, ext = os.path.splitext(A)
B = os.rename(A, pre + ".PRE")
with open("B" , 'w') as f1:
    with open("A",'r') as f2:
...

此命令将文件的扩展名从 .inp 更改为 .PRE,但不保留原始文件 "File.inp"。任何想法或解决方案如何保留原始扩展名的原始文件?

遗憾的是,一旦您使用 "os.rename()" 或 "os.replace()",它就会更改原始文件,而不仅仅是 "copy"。

您可以使用 shutil 和此代码:

import os
import shutil
A = "File.inp"
pre, ext = os.path.splitext(A)
B = pre + ".PRE"
shutil.copy(A,B)
with open(B , 'w') as f1:
    with open(A,'r') as f2:
        ...

不太清楚。所以您想保留原始文件并创建一个具有不同扩展名的副本? 我想 shutil.copy(origin, destination) 应该可行

这是一个例子:

base_file = "File.inp"
name, ext = base_file.split('.')
new_file = '{}.{}'.format(name, 'PRE')

with open(base_file , 'r') as f1:
    with open(new_file, 'w') as f2:
        f2.write(f1.read())

我仍然没有足够的声誉来发表评论,所以我在这里对德米特里的回答进行了改进。

他回答了这个问题,但对于从该线程学习的其他用户,如果文件名中有其他点,他的回答将中断 (ValueError)。

rsplit() 以相反的顺序对字符串进行操作,以 1 作为参数,将在最后一次出现分隔符时拆分字符串。

base_file = "FileV0.1.2.inp"
name, ext = base_file.rsplit('.', 1)
new_file = '{}.{}'.format(name, 'PRE')

with open(base_file , 'r') as f1:
    with open(new_file, 'w') as f2:
        f2.write(f1.read())