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
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:
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:
Ausgabe:
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.