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

时间:2015-01-05 11:32:59

标签: python gdal

我在一个文件夹中有几个(每日)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)

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

1 个答案:

答案 0 :(得分:1)

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

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)

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

filenamels将包含没有扩展名的基本名称,然后您可以随意做。