Seite 1 von 1
Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 19:42
von Beagle
Erstmal hallo leute,
bin neu hier und muss leider schon meine erste richte Noobfrage stellen.
ich scheitere daran ein txt file mittels numpy in ein array zu importieren.
Funktionierende varianten:
data = np.loadtxt("test.txt")
print data
c = "C:/xxx/FH/Python/DA/TLA_2/test.txt"
data = np.loadtxt(c)
print data
nichtfunktionierend:
c = (self.tlaFilename.text())
data = np.loadtxt(c)
print data
wobei in dem feld tlaFilename genau der gleiche Pfad steht wie wenn ich ihm manuell angebe.
Hoffe Ihr könnt mir helfen.
Auch wenn ich mir im 2. sowie im 3. bsp c anzeigen lasse ist es komplett ident.
Liebe Grüße,
Beagle
Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:06
von Sr4l
1. Bitte Code in [ python ] tags setzen.
2. Kompletten Code, bzw minimal Bsp des Problems zeigen den in deinem gezeigten Quelltext ist der Fehler nicht ersichtlich.
mfG
Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:13
von Beagle
Für die grafische oberfläche verwende ich Qt
Diese beiden geben komplett den gleichen Output. Aber je nachdem ob ich im 1. oder im 2. Beispiel c verwende funktioniert es oder nicht.
kann es sein dass durch self.xxx.text kein string übergeben wird?
Hoffe dass reicht, wüsste nicht wie ich das besser beschreiben könnte.
Danke schonmal.
Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:16
von BlackJack
@Beagle: Lass Dir mal die `repr()`-Darstellung von `c` in beiden Fällen ausgeben und vergleiche das mal.
Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:17
von /me
Beagle hat geschrieben:Auch wenn ich mir im 2. sowie im 3. bsp c anzeigen lasse ist es komplett ident.
Sicher? Sind auch keine Zeilenumbrüche oder ähnliches enthalten? Überprüfe das jeweils mit
Und bitte lass im Code unnötige Klammern weg. Die erhöhen nur die Komplexität beim Lesen.
Code: Alles auswählen
# pfui
c = (self.tlaFilename.text())
# besser
c = self.tlaFilename.text()
Noch besser wäre natürlich zusätzlich die Wahl eines aussagekräftigen Bezeichnernamens.
c ist einfach nichtssagend bzw. führt zu falschen Assoziationen wie der Lichtgeschwindigkeit.
Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:37
von Beagle
Hier sehe ich einen Unterschied.
PyQt4.QtCore.QString(u'C:/xxx/FH/Python/DA/TLA_2/test.txt')
'C:/xxx/FH/Python/DA/TLA_2/test.txt'
Und c ist derzeit nur ein "Probiername" die eigentliche Variable heisst eh filename

Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:49
von BlackJack
@Beagle: Da müsstest Du die `unicode()`-Funktion verwenden um eine Python-Zeichenkette zu bekommen.
Re: Python Anfänger braucht hilfe :(
Verfasst: Mittwoch 11. Juli 2012, 20:53
von Beagle
Vielen Herzlichen Dank euch allen; es funktioniert!!!
Ich hoff ich kann in den nächsten Tagen und Wochen noch öfter vorbeischaun falls ich kleine "Problemchen" hab
LG,
Beagle
Re: Python Anfänger braucht hilfe :(
Verfasst: Donnerstag 12. Juli 2012, 14:51
von Kebap
Du kannst auch ohne Problemchen vorbeischauen, willkommen im Forum!

Re: Python Anfänger braucht hilfe :(
Verfasst: Donnerstag 12. Juli 2012, 22:20
von Beagle
Hallo Leute,
ich habe leider schon wieder eine Frage. ich importiere mittels loadtxt 2 Felder eines Txt Files. Dies funktioniert auch grundlegend. Es handelt sich bei diesen Feldern um Datum sowie Uhrzeit. Nach derzeitigen Stand werden diese allerdings nur als String gespeichert. Da ich im weiteren Verlauf des Programms, allerdings ein bisschen damit "rechnen" will (nur von 1-31 Mai, oder nur alle von 1 Tag usw.) würde ich diese gerne in ein Datumsformat umwandeln.
Code: Alles auswählen
data = np.loadtxt(conv_filename, delimiter ='" "', skiprows = 1, usecols=(1, 2), dtype={'names': ('date', 'time'),'formats': ('S9', 'S9')})
[('3May2012', '14:26:37') ('3May2012', '14:26:58') ('3May2012', '14:26:58')
..., ('2Jul2012', '9:26:56') ('2Jul2012', '9:26:59')
('2Jul2012', '9:26:59')]
Grundsätzlich geht dies ja mit
Code: Alles auswählen
time.strptime(datestring,"%d%b%Y")
time.strptime(datestring,"%H:%M%S")
Es sollte doch möglich sein diese Konvertierung mittels converters gleich beim Einlesen des txt Files durchzuführen. Da ich es aber trotz hunderter Versuche nicht geschafft habe, und auch im Internet nichts ähnliches gefunden habe, bin ich gerade am Zweifeln.
LG,
Beagle
Re: Python Anfänger braucht hilfe :(
Verfasst: Donnerstag 12. Juli 2012, 23:01
von BlackJack
@Beagle: Eigentlich musst Du doch nur zwei Funktionen schreiben welche jeweils die Umwandlung vornehmen und dann eine Abbildung von Spaltennummer auf die jeweilige Umwandlungsfunktion als `converters`-Argument übergeben. Was Dir für `numpy` dann wahrscheinlich noch fehlt ist das umwandeln in *eine* Zahl. `time.strptime()` liefert ja ein komplexeres Objekt. Die könnte man zwar auch in einem `numpy`-Array speichern, aber da sehe ich dann keinen Vorteil von `numpy` mehr.
Re: Python Anfänger braucht hilfe :(
Verfasst: Freitag 13. Juli 2012, 07:43
von Beagle
Ich schildere mal kurz was ich grundsätzlich damit vor habe, vielleicht habe ich ja einen grundsätzlichen Denkfehler, und da wäre es mir lieber wenn er frühzeitig erkannt wird
Mittels einer grafischen Oberfläche (Qt4) soll ein Textfile eingelesen werden. Hierbei sind derzeit für mich nur die Spalte 2 und 3 relevant (Datum und Uhrzeit). Diese "Zeitdaten" sollen anschließend mit einem Balkendiagram (Matplotlib) visualisiert werden. Also zB im Mai gab es xxx Logeinträge, im im Juni yyy und im Juli zzz. Anschließend soll es noch möglich sein mittels Buttens den Ausschnitt sowie den Zeitbereich zu verändern. Also von der "Jahresansicht" wird mittels eines Button in die "Monatsansicht" gewechselt in denen dann zB 1. Mail xxx, 2. Mai yyy, ...... . Dies soll bis in die "Minutenansicht" gehen (also am 5. Mai 14:54 Sekunde 1 xxx, Sekunde 2 yyy,...). Zur Realisierung war mein derzeitiger Plan das Textfile mittels np.loadtxt einzulesen, anschließend in ein Datumsformat zu convertieren, dieses dann zu Verarbeiten (Denke das sollte mit schleifen möglich sein).
Ist dies so realisierbar?
Re: Python Anfänger braucht hilfe :(
Verfasst: Freitag 13. Juli 2012, 14:13
von BlackJack
@Beagle: Wenn man da mit `numpy` arbeiten möchte würde ich ein eindimensionales Array mit den Daten als ganzer Zahl verwenden. Also erst einmal ein zweidimensionales Array einlesen wo beide Werte in Sekunden seit „Epoch” für die Datumsangaben und seit Mitternacht für die Zeiten umgewandelt werden. Die kann man einfach addieren und damit jedes Datum aus der Datei in *einer* Zahl repräsentiert. Zum plotten liesse sich dann `numpy.histogram()` verwenden. Dazu muss man dann noch ein bischen zwischen den Zahlen und „lesbareren” Daten hin und her rechnen, da würde ich das `datetime`-Modul den Funktionen im `time`-Modul vorziehen.