欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python進(jìn)行nc轉(zhuǎn)tif的3種情況解決

 更新時(shí)間:2022年03月01日 09:31:19   作者:HeYang.hello  
在進(jìn)行氣候分析時(shí),很多人都會(huì)用到ERA5數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于如何使用python進(jìn)行nc轉(zhuǎn)tif的3種情況的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

本人是位大二在讀在校學(xué)生,專業(yè)為地理信息科學(xué),因跟老師一起做項(xiàng)目,所以有幸接觸nc數(shù)據(jù)轉(zhuǎn)換為tif數(shù)據(jù),因?yàn)樵谶@件事情上也遇過不少坑,也花了不少時(shí)間,所以想在這里將自己的心得與學(xué)習(xí)的經(jīng)驗(yàn)一起分享給大家,希望大家能獲得幫助,同時(shí)我也會(huì)很開心的??!如果哪里說的有問題或是代碼能再改進(jìn)的話,希望大家能不吝賜教,評(píng)論區(qū)歡迎大家哦?。。。。?!

一、nc4_to_tif(多時(shí)間序列)

話不多說,直接上代碼(代碼里面的注釋也是挺詳細(xì)的,所以就不贅述了):

代碼如下(示例):

# -*- coding: utf-8 -*-
import numpy as np
import netCDF4 as nc
from osgeo import gdal,osr,ogr
import glob
import os
from zipfile import ZipFile
import shutil
band_name = ''
def NC_to_tiffs(data,out_path):
    
    '''
    這個(gè)函數(shù)里面有些地方還是可能需要更改
    比如:coord(坐標(biāo)系)
    '''
    coord = 4326            #坐標(biāo)系,["EPSG","4326"],默認(rèn)為4326
    nc_data_obj = nc.Dataset(data)
    #print(nc_data_obj,type(nc_data_obj))              # 了解nc的數(shù)據(jù)類型,<class 'netCDF4._netCDF4.Dataset'>
    #print(nc_data_obj.variables)                      #了解nc數(shù)據(jù)的基本信息
    key=list(nc_data_obj.variables.keys())            #獲取時(shí)間,經(jīng)度,緯度,波段的名稱信息,這些可能是不一樣的
    print('基礎(chǔ)屬性為-----',key)
    lon_size = [i for i,x in enumerate(key) if (x.find('lon'.upper())!=-1 or x.find('lon'.lower())!=-1)][0]   #模糊查找屬于經(jīng)度的名稱
    lat_size = [i for i,x in enumerate(key) if (x.find('lat'.upper())!=-1 or x.find('lat'.lower())!=-1)][0]   #模糊查找屬于緯度的名稱
    global band_name
    if band_name == '':
        band_name = input("請(qǐng)輸入您想要輸出的波段的名字(您可以從'基礎(chǔ)屬性中得來',不用加上引號(hào))———————:")      #這里是從用戶那傳入一個(gè)波段的字符串,因?yàn)閚c4的數(shù)據(jù)比nc要復(fù)雜,所以要讓用戶確定波段的名字
    band_size = [i for i,x in enumerate(key) if (x.find(str(band_name).upper())!=-1 or x.find(str(band_name).lower())!=-1)][0]
    key_band = key[band_size]            #獲取波段的名稱     
    key_lon = key[lon_size]              #獲取經(jīng)度的名稱   
    key_lat = key[lat_size]              #獲取緯度的名稱  
    Lon = nc_data_obj.variables[key_lon][:]   #獲取每個(gè)像元的經(jīng)度
    Lat = nc_data_obj.variables[key_lat][:]    #獲取每個(gè)像元的緯度
    band = np.asarray(nc_data_obj.variables[key_band]).astype(float)  #獲取對(duì)應(yīng)波段的像元的值,類型為數(shù)組
    print("填充值:",nc_data_obj.variables[key_band])
    
    #影像的四個(gè)角的坐標(biāo)
    LonMin,LatMax,LonMax,LatMin = [Lon.min(),Lat.max(),Lon.max(),Lat.min()] 
 
    #分辨率計(jì)算
    N_Lat = len(Lat) 
    if Lon.ndim==1 :
        N_Lon = len(Lon)   #如果Lon為一維的話,就取長度
    else:         
        N_Lon = len(Lon[0])   #如果Lon為二維的話,就取寬度
    Lon_Res = (LonMax - LonMin) /(float(N_Lon)-1)
    Lat_Res = (LatMax - LatMin) / (float(N_Lat)-1)
 
    #創(chuàng)建.tif文件
    for i in range(band.shape[0]):
        driver = gdal.GetDriverByName('GTiff')   # 創(chuàng)建驅(qū)動(dòng)          
        arr1 = band[i,:,:]                   # 獲取不同時(shí)間段的數(shù)據(jù)
        out_tif_name = out_path+os.sep+ data.split('\\')[-1][:4]+ '_'+str(i) +'.tif'
        out_tif = driver.Create(out_tif_name,N_Lon,N_Lat,1,gdal.GDT_Float32) 
        # 設(shè)置影像的顯示范圍
        #-Lat_Res一定要是-的
        geotransform = (LonMin, Lon_Res, 0, LatMax, 0, -Lat_Res)
        out_tif.SetGeoTransform(geotransform)
            
        #獲取地理坐標(biāo)系統(tǒng)信息,用于選取需要的地理坐標(biāo)系統(tǒng)
        srs = osr.SpatialReference()
        srs.ImportFromEPSG(coord)                               # 定義輸出的坐標(biāo)系為"WGS 84",AUTHORITY["EPSG","4326"]
        out_tif.SetProjection(srs.ExportToWkt())               # 給新建圖層賦予投影信息
            
        #更改異常值    
        arr1[arr1[:, :]> 1000000] = -32767
        
        #數(shù)據(jù)寫出
        if arr1.ndim==2:     #如果本來就是二維數(shù)組就不變
            a = arr1[:,:]   
        else:                #將三維數(shù)組轉(zhuǎn)為二維
            a = arr1[0,:,:]    
        out_tif.GetRasterBand(1).WriteArray(a)
        out_tif.GetRasterBand(1).SetNoDataValue(-32767)
        out_tif.FlushCache() # 將數(shù)據(jù)寫入硬盤
        del out_tif       # 注意必須關(guān)閉tif文件
 
'''這個(gè)函數(shù)部分不需要更改'''
 
def nc4_to_tif(Input_folder,end_name = 'nc4'):
    Output_folder = os.path.split(Input_folder)[0]  + os.sep+ 'out_' + os.path.split(Input_folder)[-1]
    # 讀取所有nc數(shù)據(jù)
    data_list = glob.glob(Input_folder + os.sep + '*' + end_name)
    print("輸入位置為: ",Input_folder)
    print("被讀取的nc文件有:",data_list)
    if os.path.exists(Output_folder):
        shutil.rmtree(Output_folder)          #如果文件夾存在就刪除
    os.makedirs(Output_folder)            #再重建,這樣就不用運(yùn)行之后又要?jiǎng)h了之后再運(yùn)行了,可以一直運(yùn)行
    for i in range(len(data_list)):
        dat = data_list[i]
        NC_to_tiffs(data = dat,out_path = Output_folder)
        print (dat + '----轉(zhuǎn)tif成功')
    print(f"輸入位置為: {Input_folder}")
    print(f'輸出位置為: {Output_folder}')
    
'''輸入路徑不能有中文字符----------比如放在D盤中(目前我發(fā)現(xiàn)只有有多時(shí)間序列的nc或nc4文件會(huì)有這個(gè)問題,而單時(shí)間序列的就不會(huì),這個(gè)可以留給大家一起討論討論------)'''    
nc4_to_tif(Input_folder = r'D:\nc4\nc4',end_name='nc4')   #用戶需要輸入 :nc文件所放的文件夾的路徑,默認(rèn)輸出至同級(jí)目錄中,名為'out_...'

在這里,我想補(bǔ)充幾點(diǎn)(可能代碼的注釋里面講的不是很清楚):

1.如果想直接使用這個(gè)代碼的話,只需要修改:

nc4_to_tif(Input_folder = r'D:\nc4\nc4',end_name='nc4')   #用戶需要輸入 :nc文件所放的文件夾的路徑,默認(rèn)輸出至同級(jí)目錄中,名為'out_...'

里面的Input_folder的值,這里 r'....' 的意思是防止轉(zhuǎn)義,最好也不要更改。

2.這里用了自動(dòng)創(chuàng)建文件夾和刪除文件夾,這樣一來就可以無限次地運(yùn)行,避免了每運(yùn)行一次,想再次運(yùn)行的話,又得重新刪除文件夾,用到的代碼在這:

if os.path.exists(Output_folder):
        shutil.rmtree(Output_folder)          #如果文件夾存在就刪除
    os.makedirs(Output_folder)            #再重建,這樣就不用運(yùn)行之后又要?jiǎng)h了之后再運(yùn)行了,可以一直運(yùn)行

3.如果大家按照要求運(yùn)行的話(路徑?jīng)]有中文字符),會(huì)出來如下結(jié)果:

 這里是需要您從 “基本屬性” 這里的提示中獲取您想要轉(zhuǎn)換為tif數(shù)據(jù)的波段信息,像這里,我需要的是ndvi這個(gè)波段的數(shù)據(jù),那我就輸入 “ndvi”

 點(diǎn)擊回車,它就會(huì)繼續(xù)運(yùn)行,直到輸出:

這樣就表示輸出完成,并且會(huì)把輸出的路徑都給你顯示出來,這里我的輸出路徑為:“D:\nc4\out_nc4”,所以我就可以直接復(fù)制,粘貼到搜索目錄里面去找這些文件的位置(默認(rèn)是放在與您輸入路徑同一級(jí)的目錄下,名稱為 “out_” + “輸入的文件名”)。

像:

這里應(yīng)該都沒毛病吧~~~~~~~~ 

(如果想看代碼里面的具體的算法,請(qǐng)看上述的代碼的內(nèi)容以及注釋~~~~~~~~)

二、nc_to_tif(多時(shí)間序列)

 其實(shí)這里要說明的話與上面沒有什么不同,只是數(shù)據(jù)由nc4數(shù)據(jù)變?yōu)榱薾c數(shù)據(jù),還有就是代碼里面的內(nèi)容有所不同,操作的話還是一樣,一樣的~~~可以直接使用,但是如果想深入學(xué)習(xí)的話,還是得詳細(xì)看代碼哦,里面的注釋也是很詳細(xì)的~~~~~,這里我就不多贅述了~~~~~~,直接上代碼

代碼如下(示例):

# -*- coding: utf-8 -*-
 
 
import numpy as np
import netCDF4 as nc
from osgeo import gdal,osr,ogr
import glob
import os
from zipfile import ZipFile
import shutil
band_name = ''
def NC_to_tiffs(data,out_path):
    '''
    這個(gè)函數(shù)里面有些地方還是可能需要更改,像:
    coord(坐標(biāo)系)
    '''
    coord = 4326            #坐標(biāo)系,["EPSG","4326"],默認(rèn)為4326
    nc_data_obj = nc.Dataset(data)
    #print(nc_data_obj,type(nc_data_obj)) # 了解nc的數(shù)據(jù)類型,<class 'netCDF4._netCDF4.Dataset'>
    #print(nc_data_obj.variables)      #了解nc數(shù)據(jù)的基本信息
    key=list(nc_data_obj.variables.keys())            #獲取時(shí)間,經(jīng)度,緯度,波段的名稱信息,這些可能是不一樣的
    print('基礎(chǔ)屬性為  ',key)
    lon_size = [i for i,x in enumerate(key) if (x.find('lon'.upper())!=-1 or x.find('lon'.lower())!=-1)][0]   #模糊查找屬于經(jīng)度的名稱
    lat_size = [i for i,x in enumerate(key) if (x.find('lat'.upper())!=-1 or x.find('lat'.lower())!=-1)][0]   #模糊查找屬于緯度的名稱
    time_size = [i for i,x in enumerate(key) if (x.find('ime'.upper())!=-1 or x.find('ime'.lower())!=-1)][0]  #模糊查找屬于時(shí)間的名稱
    global band_name
    if band_name == '':
        band_name = input("請(qǐng)輸入您想要輸出的波段的名字(您可以從'基礎(chǔ)屬性中得來',不用加上引號(hào))———————:")   #這里是從用戶那傳入一個(gè)波段的字符串,因?yàn)閚c4的數(shù)據(jù)比nc要復(fù)雜,所以要讓用戶確定波段的名字
    band_size = [i for i,x in enumerate(key) if (x.find(str(band_name).upper())!=-1 or x.find(str(band_name).lower())!=-1)][0]
    key_band = key[band_size]            #獲取波段的名稱     
    time_name= key[time_size]  #獲取時(shí)間的名稱
    key_lon = key[lon_size]      #獲取經(jīng)度的名稱   
    key_lat = key[lat_size]      #獲取緯度的名稱  
    Lon = nc_data_obj.variables[key_lon][:]   #獲取每個(gè)像元的經(jīng)度
    Lat = nc_data_obj.variables[key_lat][:]    #獲取每個(gè)像元的緯度
    time = nc_data_obj.variables[time_name]
    times = nc.num2date(time[:],time.units)  # 時(shí)間的格式轉(zhuǎn)換,得到一個(gè)數(shù)組
    band = np.asarray(nc_data_obj.variables[key_band]).astype(float)  #獲取對(duì)應(yīng)波段的像元的值,類型為數(shù)組
    print("填充值:",nc_data_obj.variables[key_band])
    
    #影像的四個(gè)角的坐標(biāo)
    LonMin,LatMax,LonMax,LatMin = [Lon.min(),Lat.max(),Lon.max(),Lat.min()] 
 
    #分辨率計(jì)算
    N_Lat = len(Lat) 
    if Lon.ndim==1 :
        N_Lon = len(Lon)   #獲取長度
    else:
        N_Lon = len(Lon[0])
    Lon_Res = (LonMax - LonMin) /(float(N_Lon)-1)
    Lat_Res = (LatMax - LatMin) / (float(N_Lat)-1)
 
    #創(chuàng)建.tif文件
    for i in range(band.shape[0]):
        # strftime() 格式化datetime 對(duì)象
        dt = times[i].strftime("%Y-%m")     
        driver = gdal.GetDriverByName('GTiff')   # 創(chuàng)建驅(qū)動(dòng)          
        arr1 = band[i,:,:]                   # 獲取不同時(shí)間段的數(shù)據(jù)
        out_tif_name = out_path+os.sep+ data.split('\\')[-1][:-3]+ dt +'.tif'
        out_tif = driver.Create(out_tif_name,N_Lon,N_Lat,1,gdal.GDT_Float32) 
         
        # 設(shè)置影像的顯示范圍
        #-Lat_Res一定要是-的
        geotransform = (LonMin, Lon_Res, 0, LatMax, 0, -Lat_Res)
        out_tif.SetGeoTransform(geotransform)
            
        #獲取地理坐標(biāo)系統(tǒng)信息,用于選取需要的地理坐標(biāo)系統(tǒng)
        srs = osr.SpatialReference()
        srs.ImportFromEPSG(coord)                       # 定義輸出的坐標(biāo)系為"WGS 84",AUTHORITY["EPSG","4326"]
        out_tif.SetProjection(srs.ExportToWkt())               # 給新建圖層賦予投影信息
            
        #更改異常值    
        arr1[arr1[:, :]> 1000000] = -32767
        
        #數(shù)據(jù)寫出
        if arr1.ndim==2:     #如果本來就是二維數(shù)組就不變
            a = arr1[:,:]   
        else:     #將三維數(shù)組轉(zhuǎn)為二維
            a = arr1[0,:,:]    
 
        reversed_arr = a[::-1]        #這里是需要倒置一下的     橫重要的?。。。。。。。。。?!
        out_tif.GetRasterBand(1).WriteArray(reversed_arr)
        out_tif.GetRasterBand(1).SetNoDataValue(-32767)
        out_tif.FlushCache() # 將數(shù)據(jù)寫入硬盤
        del out_tif       # 注意必須關(guān)閉tif文件
 
def nc_to_tif(Input_folder,end_name = 'nc'):
    Output_folder = os.path.split(Input_folder)[0]  + 'out_' + os.path.split(Input_folder)[-1]
    # 讀取所有nc數(shù)據(jù)
    data_list = glob.glob(Input_folder + os.sep + '*' + end_name)
    print("輸入位置為: ",Input_folder)
    print("被讀取的nc文件有:",data_list)
    #if not os.path.isdir(Output_folder):           #如果輸出路徑,不存在就創(chuàng)建
    if os.path.exists(Output_folder):
        shutil.rmtree(Output_folder)          #如果文件夾存在就刪除
    os.makedirs(Output_folder)            #再重建,這樣就不用運(yùn)行之后又要?jiǎng)h了之后再運(yùn)行了
    for i in range(len(data_list)):
        dat = data_list[i]
        NC_to_tiffs(data = dat,out_path = Output_folder)
        print (dat + '-----轉(zhuǎn)tif成功')
    print(f"輸入位置為: {Input_folder}")
    print(f'輸出位置為: { Output_folder}')
        
    
'''輸入路徑不能有中文字符----------比如放在D盤中(目前我發(fā)現(xiàn)只有有多時(shí)間序列的nc或nc4文件才會(huì)有這個(gè)問題,,單時(shí)間序列的nc文件不會(huì)出現(xiàn)這樣的問題)'''    
nc_to_tif(Input_folder = r'D:\spei',end_name='nc')   #用戶需要輸入 :nc文件所放的文件夾的路徑,默認(rèn)輸出至同一上級(jí)目錄中

三、nc_to_tif(單時(shí)間序列)

這里的要說明的話也和上面一樣一樣的,所以我就~~~~~~哈哈哈不說太多了哈,不過這里需要用戶進(jìn)行的操作要更少一點(diǎn)。這里是不需要用戶傳入波段的信息,直接修改下文件的輸入路徑,就可以直接輸出了,并且這里的文件路徑可以不用再管是否有中文字符,比較方便哦~~~~~,具體代碼的細(xì)節(jié)都在注釋里了哦,愛學(xué)習(xí)的兄弟可以看看哦~~~~~~~~~~

# -*- coding: utf-8 -*-
import numpy as np
import netCDF4 as nc
from osgeo import gdal,osr,ogr
import glob
import os
import shutil
 
def NC_to_tiffs(data,out_path):
    '''
    這個(gè)函數(shù)里面有些地方還是可能需要更改
    coord(坐標(biāo)系)
    '''
    coord = 4326            #坐標(biāo)系,["EPSG","4326"],默認(rèn)為4326
    nc_data_obj = nc.Dataset(data)
    #print(nc_data_obj,type(nc_data_obj)) #了解nc數(shù)據(jù)的數(shù)據(jù)類型,<class 'netCDF4._netCDF4.Dataset'>
    #print(nc_data_obj.variables)          #了解nc數(shù)據(jù)的基本信息
    key=list(nc_data_obj.variables.keys())    #獲取時(shí)間,經(jīng)度,緯度,波段的名稱信息,這些可能是不一樣的
    print('基礎(chǔ)屬性為',key)
    lon_size = [i for i,x in enumerate(key) if (x.find('lon'.upper())!=-1 or x.find('lon'.lower())!=-1)][0]   #模糊查找屬于經(jīng)度的名稱,還在更新.....
    lat_size = [i for i,x in enumerate(key) if (x.find('lat'.upper())!=-1 or x.find('lat'.lower())!=-1)][0]   #模糊查找屬于緯度的名稱,還在更新.....
    key_band = key[len(key)-1]            #獲取波段的名稱     目前發(fā)現(xiàn)都是放在最后
    key_lon = key[lon_size]      #獲取經(jīng)度的名稱   
    key_lat = key[lat_size]      #獲取緯度的名稱  
    Lon = nc_data_obj.variables[key_lon][:]#獲取每個(gè)像元的經(jīng)度,類型為數(shù)組
    Lat = nc_data_obj.variables[key_lat][:]#獲取每個(gè)像元的緯度,類型為數(shù)組
    Band = np.asarray(nc_data_obj.variables[key_band])  #獲取對(duì)應(yīng)波段的像元的值,類型為數(shù)組
    #影像的四個(gè)角的坐標(biāo)
    LonMin,LatMax,LonMax,LatMin = [Lon.min(),Lat.max(),Lon.max(),Lat.min()] 
 
    #分辨率計(jì)算
    N_Lat = len(Lat) 
    N_Lon = len(Lon[0])
    Lon_Res = (LonMax - LonMin) /(float(N_Lon)-1)
    Lat_Res = (LatMax - LatMin) / (float(N_Lat)-1)
 
    #創(chuàng)建.tif文件
    driver = gdal.GetDriverByName('GTiff')
    out_tif_name = out_path+os.sep+ data.split('\\')[-1][:-3]+ '.tif'
    out_tif = driver.Create(out_tif_name,N_Lon,N_Lat,1,gdal.GDT_Float32) 
     
    # 設(shè)置影像的顯示范圍
    #-Lat_Res一定要是-的
    geotransform = (LonMin, Lon_Res, 0, LatMax, 0, -Lat_Res)
    out_tif.SetGeoTransform(geotransform)
        
    #獲取地理坐標(biāo)系統(tǒng)信息,用于選取需要的地理坐標(biāo)系統(tǒng)
    srs = osr.SpatialReference()
    srs.ImportFromEPSG(coord)                       # 定義輸出的坐標(biāo)系為"WGS 84",AUTHORITY["EPSG","4326"]
    out_tif.SetProjection(srs.ExportToWkt())               # 給新建圖層賦予投影信息
        
    #更改異常值    
    Band[Band[:, :]> 100000] = -32767
    
    #數(shù)據(jù)寫出
    if Band.ndim==2:     #如果本來就是二維數(shù)組就不變
        a = Band[:,:]   
    else:       #將三維數(shù)組轉(zhuǎn)為二維
        a = Band[0,:,:]    
    reversed_arr = a[::-1]      #這里是需要倒置一下的        #這個(gè)很重要?。。。。。?
    out_tif.GetRasterBand(1).WriteArray(reversed_arr)    
    out_tif.GetRasterBand(1).SetNoDataValue(-32767)   
    out_tif.FlushCache() # 將數(shù)據(jù)寫入硬盤
    del out_tif       # 注意必須關(guān)閉tif文件
 
def nc_to_tif(Input_folder):           
    Output_folder = os.path.split(Input_folder)[0] +os.sep + 'out_' + os.path.split(Input_folder)[1]
    # 讀取所有nc數(shù)據(jù)
    data_list = glob.glob(Input_folder + os.sep + '*.nc')
    print("輸入位置為: ",Input_folder)
    print("被讀取的nc文件有:",data_list)
#     if not os.path.isdir(Output_folder):
    if os.path.exists(Output_folder):
        shutil.rmtree(Output_folder)          #如果文件夾存在就刪除
    os.makedirs(Output_folder)            #再重建,這樣就不用運(yùn)行之后又要?jiǎng)h了之后再運(yùn)行了
    for i in range(len(data_list)):
        dat = data_list[i]
        NC_to_tiffs(data = dat,out_path = Output_folder)
        print (dat + '-----轉(zhuǎn)tif成功')
    print(f"輸入位置為: {Input_folder}")
    print("--------------------------")
    print(f'輸出位置為: { Output_folder}')
    
'''#用戶需要輸入 :nc文件所放的文件夾的路徑,默認(rèn)輸出至同一上級(jí)目錄中'''  
    
nc_to_tif(Input_folder = r'D:\nc\real\T2')

總結(jié)

還有,還有,還有,這里有幾個(gè)小坑以及心得我是想我跟大家進(jìn)行分享de~~~~

1.nc4跟nc的差別在于nc4的數(shù)據(jù)結(jié)構(gòu)比nc要復(fù)雜,內(nèi)容更豐富,所以轉(zhuǎn)為tif的時(shí)候要考慮的東西也更多~~~~~~~~~

2.多時(shí)間序列和單時(shí)間序列的nc或nc4數(shù)據(jù)處理成tif形式的方式也不太一樣,多時(shí)間序列的話要考慮時(shí)間因素,單時(shí)間是不需要考慮時(shí)間因素的,雖然也有時(shí)間,但是時(shí)間段只有1個(gè),多時(shí)間序列的話要根據(jù)時(shí)間段來進(jìn)行輸出的命名,所以這里也是需要考慮的~~~~~~~~

3.這個(gè)是最重要的:就是nc4的數(shù)據(jù)它是不需要將數(shù)據(jù)進(jìn)行顛倒一下的,而nc的數(shù)據(jù)是需要顛倒的,這個(gè)真的是我苦苦發(fā)現(xiàn)的,之前也犯了很多很多的錯(cuò),網(wǎng)上也沒有具體的說明,但是這個(gè)坑我在代碼里面是有說明哦,注釋也很詳細(xì),所以,如果把上面的代碼運(yùn)行的好的話是不會(huì)發(fā)生數(shù)據(jù)顛倒的情況的哦~~~~~~~~~~

到此這篇關(guān)于使用python進(jìn)行nc轉(zhuǎn)tif的3種情況的文章就介紹到這了,更多相關(guān)python進(jìn)行nc轉(zhuǎn)tif內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Python的XSS測試工具XSStrike使用方法

    基于Python的XSS測試工具XSStrike使用方法

    XSS(Cross Site Scripting,跨站腳本攻擊)是一類特殊的Web客戶端腳本注入攻擊手段,通常指攻擊者通過“HTML注入”篡改了網(wǎng)頁,插入惡意的腳本,從而在用戶瀏覽網(wǎng)頁時(shí)控制瀏覽器的一種攻擊。
    2017-07-07
  • 十分鐘輕松掌握dataframe數(shù)據(jù)選擇

    十分鐘輕松掌握dataframe數(shù)據(jù)選擇

    這篇文章主要介紹了十分鐘輕松掌握dataframe數(shù)據(jù)選擇,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 幾種實(shí)用的pythonic語法實(shí)例代碼

    幾種實(shí)用的pythonic語法實(shí)例代碼

    在我理解,Pythonic 就是很 Python 的 Python 代碼。下面這篇文章主要給大家分享介紹了幾種實(shí)用的pythonic語法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • Python中turtle庫的使用實(shí)例

    Python中turtle庫的使用實(shí)例

    這篇文章主要介紹了Python中turtle庫的使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(精簡版)

    python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(精簡版)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的精簡版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • python使用matplotlib顯示圖像失真的解決方案

    python使用matplotlib顯示圖像失真的解決方案

    這篇文章主要介紹了python使用matplotlib顯示圖像失真的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 3行Python代碼實(shí)現(xiàn)剪輯音樂

    3行Python代碼實(shí)現(xiàn)剪輯音樂

    你以為剪輯音樂要很久嗎?其余3行語句Python就能瞬間搞定。本文就來詳細(xì)為大家講講實(shí)現(xiàn)的步驟,文中的示例代碼講解詳細(xì),感興趣的可以動(dòng)手嘗試一下
    2022-06-06
  • Python實(shí)現(xiàn)輸出程序執(zhí)行進(jìn)度百分比的方法

    Python實(shí)現(xiàn)輸出程序執(zhí)行進(jìn)度百分比的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)輸出程序執(zhí)行進(jìn)度百分比的方法,涉及Python數(shù)值運(yùn)算與系統(tǒng)輸出相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例

    基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例

    這篇文章主要介紹了基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python實(shí)現(xiàn)壓縮與解壓gzip大文件的方法

    Python實(shí)現(xiàn)壓縮與解壓gzip大文件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)壓縮與解壓gzip大文件的方法,分析了Python針對(duì)壓縮成gzip文件及解壓gzip文件的方法,并給出了相應(yīng)的封裝類,需要的朋友可以參考下
    2016-09-09

最新評(píng)論