使用输入文件nam创建新文件

2024-09-30 16:40:01 发布

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

我有个问题。如何使用输入文件名重命名输出文件?在

例如,我的输入文件名是:

Field_52_combined_final_roughcal.fits

我想获得如下输出文件名:

^{pr2}$

我知道我可以写:

hdu.writeto('Field_52_traitement_1.fits')   

但是,我有另一个脚本,它在200个文件上循环,我希望输出文件名由输入文件名自动生成。在

我的脚本如下(对于单个输入文件):

#!/usr/bin/python
# coding: utf-8

from astropy.io import fits
from astropy.table import Table
import numpy as np

                ###################################
                # Fichier contenant le champ brut #
                ###################################

filename = 'E:/Fields/Field52_combined_final_roughcal.fits'

# Ouverture du fichier à l'aide d'astropy  
field = fits.open(filename)          

# Lecture des données fits
tbdata = field[1].data               

                #######################################################
                # Application du tri en fonction de divers paramètres #
                #######################################################

Several conditions / sort

        ###################################################
        # Ecriture du résultat dans nouveau fichier .fits #
        ###################################################

hdu = fits.BinTableHDU(data=tbdata_final)
hdu.writeto('{}_{}'.format(filename,'traitement_1'))    

但是,有了这样的剧本,我得到:

Field_52_combined_final_roughcal.fits_traitement_1

告诉我,如果你有任何想法,网站或其他东西:) 谢谢你的回答!在


Tags: 文件import脚本field文件名filenamefinaldu
3条回答

您可以使用一个简单的字符串替换方法并为输出文件名创建一个变量。在

filename = 'E:/Fields/Field52_combined_final_roughcal.fits'
outname = filename.replace('combined_final_roughcal', 'traitement_1')

现在只需写入名为“outname”的文件,它现在是:

E:/Fields/Field52_traitement_1.fits

>>> filename = 'Field_52_combined_final_roughcal.fits'
>>> filename.split('_')
['Field', '52', 'combined', 'final', 'roughcal.fits']
>>> filename.split('_')[:2]
['Field', '52']
>>> '_'.join(filename.split('_')[:2])
'Field_52'

因此,将其应用到代码中,请使用:

^{pr2}$

而不是:

hdu.writeto('{}_{}'.format(filename,'traitement_1')) 

这里有一种方法。“最佳”方式取决于您希望文件名的动态程度。E、 g.是否要增加“traitement”。在

def create_new_filename(old_filename, traitement):
    pieces = old_filename.split("_")
    return "_".join([pieces[0], pieces[1], "traitement", str(traitement)]) +  ".fits"

在口译员中:

^{pr2}$

要在您的案例中使用它,您需要传递旧文件名和所需的跟踪编号:

hdu.writeto(create_new_filename("Field_52_combined_final_roughcal.fits", 1))

相关问题 更多 >