Guten Tag,
ich schreibe gerade meine Bachelorarbeit dabei nutze ich als Anfänger in Bezug auf neuronale Netze und Informatik allgemein ein Buch um ein Convolutional Neural Network mit Juypter Notebook zu erstellen. Dabei soll eine csv Datei von einer Website gedownloadet werden (in einen von mir erstellte Ordnerstruktur unter Windows 10). Sobald jedoch die Ordnerstruktur von mir zuende ist und die Dateien eingefügt werden sollen bekomme ich einen fehler (denke das liegt an den doppelten backslashes die vorhanden sind sobald durch den befehl der Dateipfad erweitert wird und die nicht weggehen). Den gesamten Code habe ich aus dem buch 1 zu 1 übernommen und mehrfach auf Fehler überprüft:
import pandas as pd
from urllib.request import urlretrieve
import PIL
import os
import shutil
import numpy as np
basedir = r'/C:/Users/Fabian/Documents/bee_bumble'
dir_dict = {
'download': os.path.join(basedir,'Download'),
'train': os.path.join(basedir,'train'),
'test': os.path.join(basedir,'test'),
'valid': os.path.join(basedir,'valid'),
'train_bee': os.path.join(basedir,'train','biene'),
'train_bumble': os.path.join(basedir,'train','hummel'),
'test_bee': os.path.join(basedir,'test','biene'),
'test_bumble': os.path.join(basedir,'test','hummel'),
'valid_bee': os.path.join(basedir,'valid','biene'),
'valid_bumble': os.path.join(basedir,'valid','hummel')
}
Bis hier geht alles =)
url = 'https://raw.githubusercontent.com/dionh ... labels.csv'
urlretrieve (url, os.path.join(dir_dict['download'],'train_labels.csv'))
hier kommt der Fehler: OSError: [Errno 22] Invalid argument: '/C:/Users/Fabian/Documents/bee_bumble\\Download\\train_labels.csv'
Jupyter Notebook
Sicherheitshalber ein kleiner Exkurs zu Backslashes und String-Repräsentation.Fabian2712 hat geschrieben: ↑Freitag 6. September 2019, 14:29 denke das liegt an den doppelten backslashes die vorhanden sind sobald durch den befehl der Dateipfad erweitert wird und die nicht weggehen
Der Backslash ist ein Escape-Zeichen. Man verwendet ihn zum Beispiel dafür um im Code in einem String mit "\n" einen Zeilenumruch zu erzeugen oder mit "\t" einen Tabulator. Der resultierende String enthält dann natürlich im Falle des Zeilenumbruchs nicht die beiden Zeichen "\" und "n" sondern halt einen Zeilenumbruch. Da der Backslash als Escape-Zeichen verwendet wird ist die Frage, wie man den den Backslash selber im Code in einen String bekommt. Eigentlich logisch: man escaped ihn. Schreibst du also "\\" siehst du im Code zwei Backslashes aber im String wird daraus nur ein einziges Backslash-Zeichen.
Du kannst das sehen, wenn du den String ausgibst. Häufig wird aber die Repräsentation des Strings ausgegeben, also das was man in Python eingeben müsste um den String wieder zu erhalten. Schau dir das folgende Beispiel an:
Code: Alles auswählen
>>> foo = "\\"
>>> print(foo)
\
>>> print(repr(foo))
'\\'
>>>
Code: Alles auswählen
>>> 'Monty\nPython'
'Monty\nPython'
>>> print('Monty\nPython')
Monty
Python
Code: Alles auswählen
>>> print(r'\\')
\\
Code: Alles auswählen
>>> r'\\'
'\\\\'
Code: Alles auswählen
>>> r'\\' == '\\\\'
True
-
- User
- Beiträge: 6
- Registriert: Freitag 6. September 2019, 14:03
Also bis zum Dateipfad den ich selber erstellt habe werden ja keine doppelten backslashes gemacht nur ab da wo neue Sachen erstellt werden also ab download. Wie könnte ich denn im code ändern dass das nicht passiert? Am besten einfach den korrigierten Code senden (wie gesagt bin noch neu =))
Obige Beiträge nochmal lesen und verstehen und dann so coden:
Code: Alles auswählen
basedir = 'C:\\Users\\Fabian\\Documents\\bee_bumble'
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
-
- User
- Beiträge: 6
- Registriert: Freitag 6. September 2019, 14:03
Danke hat geklappt =)