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())
我知道 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())