2017-01-09 6 views
0

OrdnerstrukturFehler beim Speichern der Datei in einem Ordner in Python?

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

Innen file.py

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() 

Wenn ich diesen Code leite ich

folgende Störung erhalten
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' 

Antwort

2

IMG_DIR_ABS = os.path.join('.', IMG_DIR) nicht die Position des aktuellen Skript lösen. . ist das aktuelle Verzeichnis, nicht das Verzeichnis des aktuellen Skripts.

Was Sie tun möchten, ist:

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

__file__ die volle Dateipfad des aktuell laufenden Skript sein, das Ihre Erwartungen Verzeichnisbaum gegeben einstimmt.

Der Vorteil dieser Methode ist, dass Sie Ihr Skript aus jedem Verzeichnis starten können.

Beiseite: keine Notwendigkeit für f.close() innerhalb der with Block. with Kontext behandelt das für Sie beim Verlassen des Blocks.

+0

danke, es hat funktioniert –

0

Sie führen Ihr Skript von Project_Folder, aber es gibt keinen solchen Pfad './images/800313-kkenlukmjy-1481094947.jpg', wenn Sie aus diesem Verzeichnis suchen. Verwenden Sie stattdessen './scripts/images/800313-kkenlukmjy-1481094947.jpg'.

Verwandte Themen