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

Code: Alles auswählen

data = d.read() # d statt f
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

Code: Alles auswählen

text = data.read()
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)
  
####
:wink:
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. .

:wink:
yipyip