2017-10-25 5 views
0

リンクのリストをコンパイルしてリンクをダウンロードするために、次のコードを一緒に書きました。リンクは.zipアーカイブとしてダウンロードされ、各.zipアーカイブには、抽出され、親zipフォルダと同じ名前の.tifイメージが1つ含まれます。スクリプトのすべては、以下のzipフォルダの部分を抽出して名前を変更する以外は正しく動作します解凍と名前を変更

スクリプトは実行されますが、出力を表示すると.tifは正しいディレクトリにありますが名前は変更されません。

抽出された.tifの名前を変更するスクリプトを取得する正しい方法は何ですか?

も改善のための他の提案は

FULL SCRIPT

import pandas as pd 
import urllib 
import os 
import zipfile 

data = pd.read_csv('StateRaster.csv') 
links = data.SCAN_URL 
file_names = data.API_NUMBER +"_"+ data.TOOL 
dir = data.FOLDER +"/"+ data.SECTION2 
root='g:/Data/Wells' 
n=0 
e=0 

for link, file_name,dir in zip(links, file_names,dir): 
    try: 
     u = urllib.request.urlopen(link) 
     udata = u.read() 
     os.makedirs(os.path.join(root,dir), exist_ok=True) 
     f = open(os.path.join(root,dir,file_name+".zip"), "wb+") 
     f.write(udata) 
     f.close() 
     u.close() 
     zip_ref = zipfile.ZipFile((os.path.join(root,dir,file_name+".zip")), 'r') 
     #for filename in (os.path.join(root,dir,file_name+".zip")): 
     zip_ref.extractall((os.path.join(root, dir))) 
     for filename in ((os.path.join(root,dir))): 
      if filename.endswith(".tif"): 
       os.makedirs(os.path.join(root,dir,file_name+".tif"), exist_ok=True) 
       os.rename(filename,file_name+".tif") 

     zip_ref.close() 

     n += 1 
     print ('Pass',n,'Fail',e,'Total',n+e) 
    except: 
     e+=1 
     print ('Error-Pass',n,'Fail',e,'Total',n+e) 
     print("Done!!!!!") 
+0

。 –

+0

後者のループを削除しますか? 'If​​ filename.endswith(" tif "):'正常に名前を変更しますか? – gdink1020

+1

'(for(os.path.join(root、dir)))'の 'for filenameで、ディレクトリ内のファイルを反復しようとしているようですが、代わりに' {ルート}/{dir} 'ループに 'filename'を印字してみてください。 –

答えて

0

歓迎されるだろう問題は周り(())を置く必要は周り

for filename in ((os.path.join(root,dir))): 

ありませんされており、この行は単純に文字を繰り返します。あなたは、このようなos.walkまたは多分glob.globする必要があります:あなたはループのためにあなたの内にファイルパス内の文字を反復している

for filename in glob.glob(os.path.join(root, dir, "*.tif")): 
     print(filename) 
関連する問題