2017-08-17 15 views
0

zipファイルのダウンロードを自動化して指定のディレクトリに保存できました。しかし、ファイルを解凍しようとすると、最近ダウンロードしたファイルが見つからないような場所にぶつかりました。それが助け場合は、これはダウンロードして解凍プロセスに関連するコードのブロックです:Python - 解凍するダウンロードしたファイルが見つかりません

# Click on Map Link 
driver.find_element_by_css_selector("input.linksubmit[value=\"▸ Map\"]").click() 
# Download Data 
driver.find_element_by_xpath('//*[@id="buttons"]/a[4]/img').click() 

# Locate recently downloaded file 
path = 'C:/.../Download' 
list = os.listdir(path) 
time_sorted_list = sorted(list, key=os.path.getmtime) 
file_name = time_sorted_list[len(time_sorted_list)-1] 

具体的には、これは私のエラーです:

Traceback (most recent call last): 
    File "C:\Users\...\AppData\Local\Continuum\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code 
    exec(code_obj, self.user_global_ns, self.user_ns) 
    File "<ipython-input-89-3f1d00dac284>", line 3, in <module> 
    time_sorted_list = sorted(list, key=os.path.getmtime) 
    File "C:\Users\...\AppData\Local\Continuum\Anaconda3\lib\genericpath.py", line 55, in getmtime 
    return os.stat(filename).st_mtime 
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'grid-m1b566d31a87cba1379e113bb93fdb61d5be5b128.zip' 

私はそれを削除し、別のものを置くことによって、コードのトラブルシューティングを試してみましたファイルを見つけられましたが、最近ダウンロードしたファイルは見つかりませんでした。誰が私にここで起こっていることを教えてもらえますか?

+0

まず 'lists'を使って作業しているときは、変数名に' list'を使わないでください。それはおそらく名前空間の問題を引き起こすでしょう。次に、 'os.listdir'はフルパスをリストしません。ですから、 'list = os.listdir(path)'を 'os.listdir(path) 'の' fの 'file_list = [os.path.join(path、f)]に置き換える必要があります。 – Abdou

+0

また、 '[len(time_sorted_list)-1]'を '[-1]'だけに置き換えてください。 –

+0

Dupe:https://stackoverflow.com/q/29159824/2988730 –

答えて

1

まず変数名にlistを使用しないでください。これにより、listコンストラクタがプログラムのどこか他の場所ですぐに使用できるようになりません。次に、os.listdirは、そのディレクトリ内のファイルの絶対パスを返しません。あなたは完全なパスをしたい場合は、あなたが行うことができる2つのものがあります:

あなたはos.path.joinを使用することができます。

import zipfile 


path = 'C:/.../Download' 
file_list = [os.path.join(path, f) for f in os.listdir(path)] 
time_sorted_list = sorted(file_list, key=os.path.getmtime) 
file_name = time_sorted_list[-1] 
myzip = zipfile.ZipFile(file_name) 
for contained_file in myzip.namelist(): 
    if all(n in contained_file.lower() for n in ('corn', 'irrigation', 'high', 'brazil')): 
     with myzip.open(contained_file) as f: 
      # save data to a CSV file 

あなたはまた、globモジュールからglob機能を使用することができます。

​​

どちらもうまくいくはずです。

+0

ファイルを解凍するために2つのソリューションのどちらを組み込むのですか? – user2105555

+0

@ user2105555編集を参照してください。また、zipファイルの内容を抽出したいのですが、特定のファイルの内容をzipファイル全体から読み取ろうとしていますか? – Abdou

+0

私はzipファイル内の特定のファイルを探し、csvとして保存し、セレンの手順の選択肢の組み合わせとしてファイルの名前を変更したいと考えています。たとえば、作物用のトウモロコシ、給水用の灌漑、入力レベル用のハイ、ブラジルの国を選択した場合、ファイル名はCrops_Corn-WaterSupply_Irrigation-InputLevel_High-Country_Brazilなどとする必要があります。 – user2105555

関連する問題