Python beginner- Datei in Kommandozeile auslesen

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.
Antworten
messenjah
User
Beiträge: 5
Registriert: Montag 1. Dezember 2008, 17:41

Montag 1. Dezember 2008, 18:53

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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Montag 1. Dezember 2008, 18:55

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.
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

Montag 1. Dezember 2008, 18:56

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^^
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Dienstag 2. Dezember 2008, 12:57

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.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Dienstag 2. Dezember 2008, 13:15

Zeile 13 muss

Code: Alles auswählen

data = d.read() # d statt f
lauten.
MfG
HWK
messenjah
User
Beiträge: 5
Registriert: Montag 1. Dezember 2008, 17:41

Dienstag 2. Dezember 2008, 17:20

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 "
    
Zuletzt geändert von messenjah am Dienstag 2. Dezember 2008, 17:51, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dienstag 2. Dezember 2008, 17:28

Mit der Korrektur von HWK tut der Code das doch auch. Was ist denn jetzt das Problem? oO
messenjah
User
Beiträge: 5
Registriert: Montag 1. Dezember 2008, 17:41

Dienstag 2. Dezember 2008, 18:58

Ich möchte das output als string speichern
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Dienstag 2. Dezember 2008, 19:29

Code: Alles auswählen

text = data.read()
tust du doch...

oder willst du es wiederum in eine Datei speichern?
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Dienstag 2. Dezember 2008, 20:05

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
messenjah
User
Beiträge: 5
Registriert: Montag 1. Dezember 2008, 17:41

Freitag 5. Dezember 2008, 19:59

gehts auch ohne outputfile ? ich meine man muss mit diesem skript ein in-und outfile eingeben!
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Freitag 5. Dezember 2008, 20:33

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.
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Freitag 5. Dezember 2008, 23:07

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
Antworten