file auslesen in unix/linux

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
linde_user

file auslesen in unix/linux

Beitragvon linde_user » Dienstag 19. April 2005, 15:52

Hi,
ich bin erst seit kurzem ein Anwender von Python und Unix brauche beides für meine Diplomarbeit. Ich habe zur Zeit folgendes Problem: ich möchte eine Datei öffnen und Zahlen daraus auslesen und weiterverarbeiten. ich habe zwar die anweisung: datei=open("filename") gefunden, weiß aber nicht wie ich ihm beibringe eine bestimmte datei zu öffnen. muss die an einem bestimmten ort stehen um das programm mit
..python dateiöffnen.py filename.. zu nutzen?
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 19. April 2005, 16:17

Code: Alles auswählen

filename = "bsp.txt"
f = file( filename, "r" )
lines = f.read().split("\n")
f.close

for line in lines:
    print line

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 19. April 2005, 16:18

Code: Alles auswählen

import sys
f = file(sys.argv[1], 'r')
for line in f:
    print line
f.close()
My god, it's full of CARs! | Leonidasvoice vs Modvoice
linde_user

Beitragvon linde_user » Dienstag 19. April 2005, 16:40

danke für die schnelle antwort, klappt aber beides noch nicht. bei ersten sagt er:

filename="vm"
syntax error

und beim zweiten:
nameerror: file.
fehlt da vielleicht ein verweis auf den pfad der auszulesenden datei(vm)?
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 19. April 2005, 16:41

Poste mal deinen Code und den Traceback von Python!

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Beitragvon Gast » Dienstag 19. April 2005, 16:58

Code: Alles auswählen

import os
filename=os.path.join("../ordner/unterordner/vm")
f = file( filename, "r" )
lines = f.read().split("\n")
f.close

for line in lines:
    print line


aufruf über python open.py im Ordner wo open.py abgelegt ist

sagt er:

Code: Alles auswählen

File "open.py", line 5
filename="vm"
SyntaxError: invalid Syntax


Edit (Leonidas): Code in Python Tags gesetzt.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 19. April 2005, 17:01

os.path.join() ist hier auch überflüssig, das ist dafür um mehrere Pfad-Teile zusammen zu packen...

Aber ist vm auch eine Datei???

Probier mal das hier:

Code: Alles auswählen

import os, sys

filename= "../ordner/unterordner/vm"
if not os.path.isfile( filename ):
    print "Datei [%s] existiert nicht!" % filename
    sys.exit()

f = file( filename, "r" )
lines = f.read().split("\n")
f.close

for line in lines:
print line

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Beitragvon Gast » Dienstag 19. April 2005, 17:04

:oops: verschrieben: er meckert über filename=os.path.join(...)
linde_user

Beitragvon linde_user » Dienstag 19. April 2005, 17:09

meckert immer noch am filename="../.."
scheint ein grundlegendes problem zu sein
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 19. April 2005, 17:11

Weil nur ein Argument angegeben...
Mit os.path.join() kannst du folgendes machen:

Code: Alles auswählen

verz = "../ordner/unterordner"
datei = "beispiel.txt"
filename = os.path.join( verz, datei )
print filename

Ausgabe:

Code: Alles auswählen

../ordner/unterordner/beispiel.txt


Poste mal die gesammte Traceback-Meldung von Python!!!

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 19. April 2005, 17:49

Achja und die Datei solltest du auch nicht open.py nennen, sonst kannst du tolle Fehler bekommen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Beitragvon marco_ » Dienstag 19. April 2005, 18:29

Also ich hab keinerlei Probleme. Meine Python Datei liegt in einem Unterverzeichnis der Textdatei (zb in ~/Test/). Sie hat den Aufbau:

Code: Alles auswählen

f = open("../text.test.txt","r")
inh = f.readlines()
f.close()
for line in inh:
   print line

Die Textdatei mit dem namen text.test.txt liegt im root-verzeichnises des Programms (z.b. ~). Folgender Inhalt:

Code: Alles auswählen

 Lala
 ASAS
 Wedew
 werfdds


Ausgabe:

Code: Alles auswählen

 Lala
 ASAS
 Wedew
 werfdds


du weißt schon das der Befehl ../ in das darüberliegende Verzeichnis wechselt, wenn also die .py Datei im Verzeichnis /ABC/DEF/GHI/Test.py liegt, dann öffnet der Befehl open("../vm") die Datei /ABC/DEF/vm und nicht /ABC/DEF/GHI/vm.
linde_user

Danke!!!

Beitragvon linde_user » Mittwoch 20. April 2005, 07:18

Funktioniert! Problem war glaube ich die Pfadeingabe. Da mein zugriff auf dieser maschine limitiert ist habe ich glatt übersehen, dass mein working dirctory noch 2 Stufen unter dem root dirctory liegt. Danke für die Unterstützung. :D

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder