Seite 1 von 1
Python beginner- Datei in Kommandozeile auslesen
Verfasst: Montag 1. Dezember 2008, 18:53
von messenjah
Hallo, bin python-Anfäger versuche ein Script zu schreiben, das Dateien (z.B text-dateien) in der kommando auszulesen: brauche dringend eure Hilfe
MFG
Code: Alles auswählen
import sys
if sys.argv[1:]:
file = sys.argv[1]
else:
sys.exit('python readFile < file >')
def readfile(file):
d = open(file,"r")
data= f.read()
d.close()
return data
Verfasst: Montag 1. Dezember 2008, 18:55
von BlackVivi
Die Funktion readfile wird nirgends aufgerufen... Spiel mit dem Intepreter mal herum, mach mal'ne Funktion... Und guckmal was passiert. Ihr Inhalt passiert erst nach einem Aufruf... vorher nicht.
Außerdem überschreibst du den builtin ``file``, was man auch gut am Syntax-Highlighter vom Forum sehen kann. Nimm'n anderen Namen, wie fl oder so.
Re: Python beginner- Datei in Kommandozeile auslesen
Verfasst: Montag 1. Dezember 2008, 18:56
von Birne94
Code: Alles auswählen
import sys
if sys.argv[1:]:
file = sys.argv[1]
else:
sys.exit('python readFile < file >')
def readfile(file):
d = open(file,"r")
data= f.read()
d.close()
return data
readfile(file)
Was ist dein Problem?
Du musst nur die Funktion aufrufen!
evtl. könnte es auch mit dem namen 'file' probleme geben...
EDIT: shit, 2late^^
Verfasst: Dienstag 2. Dezember 2008, 12:57
von Y0Gi
Suchst du vielleicht u. a. danach?
Code: Alles auswählen
if len(sys.argv) != 2:
# Hier "usage"-Information ausgeben und beenden.
Alternativ kannst du auch den `IndexError`, der in deinem Code bei Aufruf ohne Argument geworfen wird, fangen und dort die "usage"-Hilfe ausgeben.
P. S.: Du solltest deine Vorkommnisse von `file` durch etwa `filename` ersetzen.
Verfasst: Dienstag 2. Dezember 2008, 13:15
von HWK
Zeile 13 muss
lauten.
MfG
HWK
Verfasst: Dienstag 2. Dezember 2008, 17:20
von messenjah
Was ich eigentlich versuche zu machen, ist ein Wordlist auszulesen! die Outputdatei sollte ein String sein...
Code: Alles auswählen
import sys
def readfile (filename):
try:
data = open(filename,'r')
text = data.read()
data.close()
print text
except:
" Datei existiert nicht "
Verfasst: Dienstag 2. Dezember 2008, 17:28
von cofi
Mit der Korrektur von HWK tut der Code das doch auch. Was ist denn jetzt das Problem? oO
Verfasst: Dienstag 2. Dezember 2008, 18:58
von messenjah
Ich möchte das output als string speichern
Verfasst: Dienstag 2. Dezember 2008, 19:29
von nemomuk
tust du doch...
oder willst du es wiederum in eine Datei speichern?
Verfasst: Dienstag 2. Dezember 2008, 20:05
von yipyip
Code: Alles auswählen
#!usr/bin/env python
"""
Usage: inout.py <infile> <outfile>
"""
####
# for python 2.5
from __future__ import with_statement
import sys
####
def read_text(infile):
with open(infile, 'r') as ifp:
text = ifp.read()
return text
####
def write_text(outfile, text=''):
with open(outfile, 'w') as ofp:
ofp.write(text)
####
if __name__ == '__main__':
if len(sys.argv) < 3:
print __doc__
sys.exit(0)
infile, outfile = sys.argv[1:]
text = read_text(infile)
write_text(outfile, text)
####
yipyip
Verfasst: Freitag 5. Dezember 2008, 19:59
von messenjah
gehts auch ohne outputfile ? ich meine man muss mit diesem skript ein in-und outfile eingeben!
Verfasst: Freitag 5. Dezember 2008, 20:33
von cofi
Zum auslesen musst du doch nur read_text übernehmen und den if main Code anpassen. So schwer ist das nun wirklich nicht. Außerdem steht die Lösung doch schon lange im Thread.
Verfasst: Freitag 5. Dezember 2008, 23:07
von yipyip
Hallo messenjah,
ich hatte ursprünglich gedacht,
ich gebe Dir ein komplettes Beispiel, damit
Du Dir das Beste (oder was auch immer)
dabei herauspicken kannst.
Wo Du da auf dem Schlauch stehst, verstehe ich
mittlerweile auch nicht mehr.
Die Eingabedatei steht als String in der Variablen 'text'.
Jetzt kannst Du damit nach Belieben weiter verfahren,
z.B. den String manipulieren, mit print ausgeben, etc. .
yipyip