Seite 1 von 1

file auslesen in unix/linux

Verfasst: Dienstag 19. April 2005, 15:52
von linde_user
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?

Verfasst: Dienstag 19. April 2005, 16:17
von jens

Code: Alles auswählen

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

for line in lines:
    print line

Verfasst: Dienstag 19. April 2005, 16:18
von Leonidas

Code: Alles auswählen

import sys
f = file(sys.argv[1], 'r')
for line in f:
    print line
f.close()

Verfasst: Dienstag 19. April 2005, 16:40
von linde_user
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)?

Verfasst: Dienstag 19. April 2005, 16:41
von jens
Poste mal deinen Code und den Traceback von Python!

Verfasst: Dienstag 19. April 2005, 16:58
von Gast

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.

Verfasst: Dienstag 19. April 2005, 17:01
von jens
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

Verfasst: Dienstag 19. April 2005, 17:04
von Gast
:oops: verschrieben: er meckert über filename=os.path.join(...)

Verfasst: Dienstag 19. April 2005, 17:09
von linde_user
meckert immer noch am filename="../.."
scheint ein grundlegendes problem zu sein

Verfasst: Dienstag 19. April 2005, 17:11
von jens
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!!!

Verfasst: Dienstag 19. April 2005, 17:49
von Leonidas
Achja und die Datei solltest du auch nicht open.py nennen, sonst kannst du tolle Fehler bekommen.

Verfasst: Dienstag 19. April 2005, 18:29
von marco_
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.

Danke!!!

Verfasst: Mittwoch 20. April 2005, 07:18
von linde_user
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