2017-01-09 9 views
0
file.py

Pythonのフォルダにファイルを保存しようとしてエラーが発生しましたか?

import requests 
import os 
import sys 
sys.path.append('.') 
url = "http://d2np4vr8r37sds.cloudfront.net/800313-kkenlukmjy-1481094947.jpg" 
image = requests.get(url) 
IMG_DIR = 'images' 
IMG_DIR_ABS = os.path.join('.', IMG_DIR) 
filename = "800313-kkenlukmjy-1481094947.jpg" 
fullfilename = os.path.join(IMG_DIR_ABS, filename) 
with open(fullfilename, 'wb') as f: 
    f.write(image.content) 
    f.close() 

インサイド

フォルダ構造

Project_Folder -| 
       Scripts-| 
          images -| 
          file.py 

私は現在のスクリプトの場所を解決しない、次のエラー

python scripts/file.py 
Traceback (most recent call last): 
    File "scripts/file.py", line 9, in <module> 
    with open(fullfilename, 'wb') as f: 
IOError: [Errno 2] No such file or directory: './images/800313-kkenlukmjy-1481094947.jpg' 

答えて

2

IMG_DIR_ABS = os.path.join('.', IMG_DIR)を取得していますこのコードを実行しています。 .は現在のディレクトリであり、現在のスクリプトのディレクトリではありません。あなたが何をしたいか

は次のとおりです。

IMG_DIR_ABS = os.path.join(os.path.dirname(__file__), IMG_DIR) 

__file__は、ディレクトリツリー与えられたあなたの期待と一致して、現在実行中のスクリプトの完全なファイルパスであること。

この方法の利点は、任意のディレクトリからスクリプトを起動できることです。

脇:ブロック内にf.close()の必要はありません。 withコンテキストを処理してブロックを終了します。

+0

ありがとう –

0

Project_Folderからスクリプトを実行していますが、そのディレクトリから見るとそのようなパスはありません。'./images/800313-kkenlukmjy-1481094947.jpg'代わりに'./scripts/images/800313-kkenlukmjy-1481094947.jpg'を使用してみてください。

関連する問題