Seite 1 von 1

Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 11:17
von Strawk
Hallo!
Mein Code findet die korrekte Datei und gibt sie aus; beim Öffnen aber wird gemeldet: File not found. Wie geht das zu? :)

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Sat Jan  5 11:10:27 2019

@author: Karl Kraft
"""

import os
import gpxpy

path = "data/"
files = os.listdir(path)
for i in range(len(files)):
    print(files[i])
    gpx_file = open(files[i], 'r') # gpx_file is opened for reading
    gpxdata = gpxpy.parse(gpx_file)
runfile('C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data/file_not_found_error_01.py', wdir='C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data')
Aachen.gpx
Traceback (most recent call last):

File "<ipython-input-21-c17527da6ba2>", line 1, in <module>
runfile('C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data/file_not_found_error_01.py', wdir='C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data')

File "C:\Users\Karl Kraft\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)

File "C:\Users\Karl Kraft\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data/file_not_found_error_01.py", line 15, in <module>
gpx_file = open(files, 'r') # gpx_file is opened for reading

FileNotFoundError: [Errno 2] No such file or directory: 'Aachen.gpx'

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 11:36
von eckhard
@Strawk: Datei ist im Verzeichnis data. Du suchst Sie aber im aktuelln Verzeichnis.
Eckhard

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 11:38
von sparrow
Die Fehlermeldung beinhaltet nicht die Zeile aus deinem Quelltext.
In der Fehlermeldung lautet die Zeile

Code: Alles auswählen

gpx_file = open(files, 'r') # gpx_file is opened for reading
in deinem Quelltext

Code: Alles auswählen

gpx_file = open(files[i], 'r') # gpx_file is opened for reading
Dort liegt auch der Fehler.

Weiter:

Bitte iteriere nicht über range() sondern direkt über files:
for file in os.listdir(path):

Benutze nicht "open" sondern benutze den with-Operator:
with open(file, "r") as gpx_file:

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 12:01
von Sirius3
`os.listdir` liefert nur die Dateinamen, die liegen aber im Verzeichnis `data`, daher lohnt es sich, statt listdir glob zu benutzen:

Code: Alles auswählen

from glob import glob
for filename in glob("data/*"):
    with open(filename) as gpx_file:
        gpxdata = gpxpy.parse(gpx_file)

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 12:03
von Strawk
Hallo!
In eurem Forum kann man keine eckigen Klammern mit copy und paste einfügen. Im Entwurf sind sie da, in Vorschau und Thread werden sie geschluckt. Bitte den Bug fixen.
Grüße
Strawk

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 12:08
von Sirius3
Der Bug ist, dass Du auch den Stacktrace in [ code ]-Tags packen mußt, bitte fixen.

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 12:25
von __blackjack__
@Strawk: Die eckigen Klammern werden nicht geschluckt, sondern von der Forensoftware als Formatierugsanweisungen interpretiert mit [ i ] (ohne die Leezeichen) wird kursiv formatierter Text eingeleitet.

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 12:35
von Strawk
Hallo!
Okay, also jetzt nochmal. Hier der Code:

Code: Alles auswählen

import os
import gpxpy

path = "data/"
files = os.listdir(path)
for i in range(len(files)):
    print(files[i])
    gpx_file = open(files[i], 'r') # gpx_file is opened for reading
    gpxdata = gpxpy.parse(gpx_file)
Sowie der Trace:

Code: Alles auswählen

runfile('C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data/file_not_found_error_01.py', wdir='C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data')
Aachen.gpx
Traceback (most recent call last):

  File "<ipython-input-32-c17527da6ba2>", line 1, in <module>
    runfile('C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data/file_not_found_error_01.py', wdir='C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data')

  File "C:\Users\Karl Kraft\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\Karl Kraft\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Karl Kraft/Documents/Programmierung_ausser_PHP/Python/analysis_of_geo_data/file_not_found_error_01.py", line 15, in <module>
    gpx_file = open(files[i], 'r') # gpx_file is opened for reading

FileNotFoundError: [Errno 2] No such file or directory: 'Aachen.gpx'
Erbitte hilfreiche Tipps, danke!
Strawk

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 12:57
von Sirius3
@Strawk: Du hast schon zwei Lösungen und viele hilfreiche Tipps bekommen.

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 13:08
von snafu
Eine Möglichkeit wäre die pathlib. Ungetestet:

Code: Alles auswählen

from pathlib import Path
import gpxpy

path = Path('data')
for filename in path.glob('*.gpx'):
    with filename.open() as gpx_file:
        gpxdata = gpxpy.parse(gpx_file)
Eine andere Komplettlösung hatte dir ja auch schon Sirius3 geliefert. Weiter kann man hier nicht helfen...

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 17:34
von Strawk
Hallo!
Ja, das klappt jetzt auch zum großen Teil; durch Beherzigung eurer Ratschläge. Eine eher kurze Frage(?): Wie kann ich prüfen, ob eine GPX-Datei Zeitinformationen enthält oder nicht?
Grüße
Strawk

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Samstag 5. Januar 2019, 19:35
von __blackjack__
@Strawk: Die entsprechende Methode aufrufen die das prüft. :-)

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Sonntag 6. Januar 2019, 11:51
von Strawk
Also sprach Salomo...
Hättest du die Güte, mir diese Methode zu nennen?
Strawk

Re: Einzelproblem, Datei ist da und doch nicht da

Verfasst: Sonntag 6. Januar 2019, 12:22
von ThomasL
Ich denke mal, hier solltest du fündig werden....
https://github.com/tkrajina/gpxpy