使用python时如何提取输出文件的输入文件名称?

How to extract the name of inputfile for the outputfile when using python?

我在一个文件夹中有几个(每日)Netcdf 文件:2010 年和 2015 年 5 年

我想使用 gdal_translate 从这些文件中提取一些变量,但我对如何在我的代码中表示日期 written in the Netcdf file 有疑问。

文件的命名方式如下:

Nx.20120329.SUB.nc

代码:

 import os
 for year in range (2010,2014):
  yearp=str(year).zfill(2)

    for month in range(1,13):
     monthp=str(month).zfill(2)
for doy in range (1, 32):
        doy=str(doy).zfill(2)
        inputFile='C:\Users\Nx.'+str(year)+''+monthp+''+str(doy)+'.SUB.nc'
        inputDataset='NETCDF:\"'+inputFile+'\":sf'

        outputFile='C:\Users\Nx.'+str(year)+''+monthp+''+str(doy)+'.SUB.img'
        gdalcmd='gdal_translate -of "ENVI" '+inputDataset+' '+outputFile
           os.system( gdalcmd)

我的问题:有没有办法让输出文件与输入文件同名,这样我就不需要精确地从今年到那年或从这个月到那个月等等。 获取任何指定文件夹中的所有文件,提取所需的变量并输入输入文件的确切名称?无论您的文件夹中有多少文件或年份?

您可以指定起始目录,并根据其中的所有文件的扩展过程,这是我会做的...

import os
import fnmatch

filenamels = []
inputExtension = ".nc"
outputExtension = ".img"
inputDir = "C:\Users\"
for filename in os.listdir(inputDir):
    if fnmatch.fnmatch(filename, '*' + inputExtension):
        filenamels.append(filename[:-len(inputExtension)])

for fn in filenamels:
    inputDataset = 'NETCDF:\"'+ fn + inputExtension +'\":sf'
    outputFile = inputDir + 'Nx.' + fn + '.SUB' + outputExtension
    gdalcmd='gdal_translate -of "ENVI" '+ inputDataset + ' '+ outputFile
    os.system( gdalcmd)

这将使用您的输入目录并根据您提供的扩展名形成文件列表。

文件名将包含没有扩展名的基本名称,然后您可以随心所欲。