Hallo ich möchte aus einer Datei den Inhalt von 3 spalten pro Zeile in 3 Variablen speichern mit den eine Schleife durchlaufne und dannach eine Zeile weiter die 3 Variablen neu belegen. Hat jemand Tipps wie ich dan in BashScript oder VBS mache? MfG
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Hallo!
Leider, leider kann ich nur eine Python-Version anbieten.
Ich hoffe, es ist das, was du wolltest:
http://paste.pocoo.org/show/121722/
Die Eingabedatei muss so aussehen:
1 2.5 6.7
3 156 0.3
Gruss
ChrE
ERROR habe Py 3.0
line 7 print float(a)+float(b)+float(c) # berechnen und ausgeben
^
SyntaxError: invalid syntax
Hallo!
Oh sorry, in Python 3.0 hat man aus dem "Print"-Statement eine Funktion gemacht:
http://www.thomas-gatzweiler.de/2008/12/04/python-30-ist-da/
Ich selber benutze noch Python 2.5...
Schreibe es doch mal so:
print(float(a)+float(b)+float(c)) # berechnen und ausgeben
Achtung: Tab am Zeilenanfang (Einrückung) ist wichtig.
Sonst erkennt der Interpreter nicht, dass der Befehl ein Teil der Schleife ist.
Gruss
ChrE
Mit py 2.6 geht es danke. Wie verwende ich einen TAB als seperator ?
wie führe ich shell befehle aus ?
Hallo,
Falls Du Windows hast:
Besorge Dir die Active State Python Entwicklungsumgebung.
http://www.activestate.com/activepython/
Die ist besser als die IDLE-Umgebung.
a,b,c=line.split('\t') - falls TAB der Trenner ist.
C:\>meinscript meinfile.txt
sollte im aktuellen Verzeichnis "meinscript.py" ausführen.
"meinfile.txt" ist dann sys.argv[1] - der erste Parameter der Kommandozeile.
Gruss
ChrE
# -*- coding: utf-8 -*-
import sys # Systemfunktionen lden
lines=open(sys.argv[1],'r').readlines() # Datei einlesen
for line in lines: # für alle Zeilen
a,b,c=line.split('\t') # in Variablen speichern
print str(a) + " " + str(b) # berechnen und ausgeben
open(sys.argv[2],'w').writelines(str(a) + " " + str(b)) # Datei Schreibens
geht supper DANKE
ich wollte mit der lezten zeile die ausgabe von oben in eine Datei umleiten. Es wird aber nur die erste Zeile geschrieben.
sry es wird immer die lezte Zeiel in die Datei geschrieben. Warschienlcih wird der Inhalt immer überschrieben. Wie hänge ich etwas an eine .txt an?
Mit dem Anhängen habe ich rausgefunden.
# -*- coding: utf-8 -*-
import sys # Systemfunktionen lden
lines=open(sys.argv[1],'r').readlines() # Datei einlesen
for line in lines: # für alle Zeilen
a,b,c,d,e=line.split('\t') # in Variablen speichern
print str(b) + " " + str(d) + " " + str(e) # berechnen und ausgeben
open(sys.argv[2],'a').writelines(str(b) + " " + str(d) + " " + str(e)) # Datei Schreibens
habe aber den Fehler
a,b,c,d,e=line.split('\t')
ValueError: too many values to unpack
Liste hat 6 Spalten und 3 davon brauch ich.
Hallo!
a,b,c,d,e,f=line.split('\t') # SECHS Spalten
Gruss
ChrE
Hallo!
Du kannst Deine Ausgaben ruhig mit Print machen.
C:\>meinscript eingabefile.txt > ausgabefile.txt
mit dem Pipesymbol (">") kannst Du die "Print"-Ausgaben umleiten
mit ">>" an eine vorhandene Datei anhängen. So sparst Du das
Öffnen einer zweiten Datei.
Gruss
ChrE
Immer noch der selbe Fehler
Nun habe ich Error: SyntaxError: can't assign to function call line 6
ERROR: Line 6 ValueError: too many values to unpack
Wie vorhin...
# -*- coding: utf-8 -*-
import sys # Systemfunktionen lden
lines=open(sys.argv[1],'r').readlines() # Datei einlesen
for line in lines: # für alle Zeilen
a,b,c,d,e,f=line.split('\t') # in Variablen speichern
print str(b) + " " + str(c) # berechnen und ausgeben
#open(sys.argv[2],'a').writelines(str(b) + " " + str(c)) # Datei Schreibens
Hallo!
Dann stimmt was mit der Formatierung einer Zeile nicht.
Probiere folgendes:
statt: a,b,c,d,e,f=line.split('\t') -> list=line.split('\t')
statt: print str(b) + " " + str(c) -> print list
Du bekommt eine Liste ausgegeben mit den Feldern die
die Tabs trennten. Evtl. sieht man so, woran es mangelt.
Gruss
ChrE
Bekomme eine " , " getrennte liste statt Tabs
Hallo,
Klar, kanste ja mal posten.
Wie viele Elemente sind in den Listen?
Gruss
ChrE
&* 8 leere Spalten, würde den Inhalt nur sehr ungern posten. Es sollen ja nur die ersten 6 ausgewertet werden. Melde mich morgen wieder Gute Nacht
ok. Danke Gleichfalls.
eingabe: myfilebase.eu/in.txt
ausgabe: myfilebase.eu/out.txt
cmd ausgabe: myfilebase.eu/outcmd.txt
Hallo,
Das verstehe ich nicht.
Wie lautet die komplette Kommandozeile?
Was geht nicht?
Beispiel: >meinscript in.txt > out.txt
So würde ich es machen.
Und was ist "&* 8 leere Spalten"? Sowas?
['&8', '', '', '', '', '', '', '', '']
???
Gruss
ChrE
Es geht nicht die spalten in Variablen zu übergeben.
test.py in.LST
Hallo,
Klar geht das. Man bräuchte nur EIN Beispiel.
list=line.split('\t')
Hier wird die Zeile in eine Liste eingetragen,
die so viele Einträge hat, wie durch die Tabs getrennt werden.
Bei 6 Tabs gibt es 7 Spalten.
mit sum=float(list[0])+float(list[2])
kannst Du einzelne Spaltenwerte z.B. addieren.
Gruss
ChrE
mein Ergebniss myfilebase.eu/code.txt
Das mit der Datei funktioniert aber ich bekomme aber keine ausgabe. habe nun Python 3.0 und keine Fehler meldung.
Hallo!
Oh, ich hatte gerade eine lange Leitung wegen der Links.
Ist das besser?
http://paste.pocoo.org/show/121966/
Gruss
ChrE
der code
myfilebase.eu/code.txt
Ich habe in meinem Code den Fehler gefunden geht gut danke.
Python ist eine wunderschöne, freie und unabhängige sprache DANKE für den Tipp!
Hi ich habe irgend wie noch ein Problem und zwar werden die Werte aus der Liste gelesen aber immer mit ' ' zwischen den Buchstaben also z.B.
■8 2 . * * * . 2 1 9 . 1 8 0 y j u y h j s g h j @ * * * h t a . * * * * 1 1 * *
code unter myfilebase.eu/code.txt
Hallo!
Vielleicht stören die Klammern.
Ohne geht es auch:
http://paste.pocoo.org/show/122850/
a,b,c sind Strings. Die muss man nicht mit str() ausgeben.
Kannst auch noch mal die Ergebnisdatei posten.
Ich kann kein '' erkennen.
Gruss
ChrE
ich meinte das immer eine Zwischen raum allso ' ' dazwischen ist. Es scheint das mein Code nicht mit unicode text zurecht kommt.
Hallo!
Ach ja, das habe ich ganz vergessen. Typisch.
Ist ja kein ASCII.
Welche Codierung? UTF-8?
Ich mus noch mal schauen, wie man die Verarbeitung
auf Unicode umstellt...
Man braucht ein Modul names "codecs"
Gruss
ChrE
Hallo!
Schau Dir mal den Quelltext an.
Codierungen sind oft ein Problem.
http://paste.pocoo.org/show/123136/
Das Programm sollte mit einigen Modifikationen Unicode
lesen und schreiben können.
Gruss
ChrE