Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Textdatei mit x zielen und 3 Spalten mit bash oder VBS ausles

malte simon / 30 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
ChrE malte simon „Textdatei mit x zielen und 3 Spalten mit bash oder VBS ausles“
Optionen

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

bei Antwort benachrichtigen
malte simon ChrE „Hallo! Leider, leider kann ich nur eine Python-Version anbieten. Ich hoffe, es...“
Optionen

ERROR habe Py 3.0


line 7 print float(a)+float(b)+float(c) # berechnen und ausgeben
^
SyntaxError: invalid syntax

bei Antwort benachrichtigen
ChrE malte simon „ERROR habe Py 3.0 line 7 print float a float b float c berechnen und ausgeben...“
Optionen

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


bei Antwort benachrichtigen
malte simon Nachtrag zu: „ERROR habe Py 3.0 line 7 print float a float b float c berechnen und ausgeben...“
Optionen

Mit py 2.6 geht es danke. Wie verwende ich einen TAB als seperator ?
wie führe ich shell befehle aus ?

bei Antwort benachrichtigen
ChrE malte simon „Mit py 2.6 geht es danke. Wie verwende ich einen TAB als seperator ? wie führe...“
Optionen

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


bei Antwort benachrichtigen
malte simon ChrE „Hallo, Falls Du Windows hast: Besorge Dir die Active State Python...“
Optionen

# -*- 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.

bei Antwort benachrichtigen
malte simon Nachtrag zu: „ - - coding: utf-8 - - import sys Systemfunktionen lden lines open sys.argv 1 ,...“
Optionen

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?

bei Antwort benachrichtigen
malte simon Nachtrag zu: „sry es wird immer die lezte Zeiel in die Datei geschrieben. Warschienlcih wird...“
Optionen

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.

bei Antwort benachrichtigen
ChrE malte simon „Mit dem Anhängen habe ich rausgefunden. - - coding: utf-8 - - import sys...“
Optionen

Hallo!

a,b,c,d,e,f=line.split('\t') # SECHS Spalten

Gruss

ChrE

bei Antwort benachrichtigen
ChrE Nachtrag zu: „Hallo! a,b,c,d,e,f line.split t SECHS Spalten Gruss ChrE “
Optionen

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

bei Antwort benachrichtigen
malte simon ChrE „Hallo! Du kannst Deine Ausgaben ruhig mit Print machen. C: meinscript...“
Optionen

Immer noch der selbe Fehler

bei Antwort benachrichtigen
malte simon Nachtrag zu: „Immer noch der selbe Fehler“
Optionen

Nun habe ich Error: SyntaxError: can't assign to function call line 6

bei Antwort benachrichtigen
malte simon Nachtrag zu: „Immer noch der selbe Fehler“
Optionen

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


bei Antwort benachrichtigen
ChrE malte simon „ERROR: Line 6 ValueError: too many values to unpack Wie vorhin... - - coding:...“
Optionen

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

bei Antwort benachrichtigen
malte simon ChrE „Hallo! Dann stimmt was mit der Formatierung einer Zeile nicht. Probiere...“
Optionen

Bekomme eine " , " getrennte liste statt Tabs

bei Antwort benachrichtigen
ChrE malte simon „Bekomme eine , getrennte liste statt Tabs“
Optionen

Hallo,

Klar, kanste ja mal posten.
Wie viele Elemente sind in den Listen?

Gruss

ChrE

bei Antwort benachrichtigen
malte simon ChrE „Hallo, Klar, kanste ja mal posten. Wie viele Elemente sind in den Listen? Gruss...“
Optionen

&* 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

bei Antwort benachrichtigen
ChrE malte simon „ 8 leere Spalten, würde den Inhalt nur sehr ungern posten. Es sollen ja nur die...“
Optionen

ok. Danke Gleichfalls.

bei Antwort benachrichtigen
malte simon ChrE „ok. Danke Gleichfalls.“
Optionen

eingabe: myfilebase.eu/in.txt
ausgabe: myfilebase.eu/out.txt
cmd ausgabe: myfilebase.eu/outcmd.txt

bei Antwort benachrichtigen
ChrE malte simon „eingabe: myfilebase.eu/in.txt ausgabe: myfilebase.eu/out.txt cmd ausgabe:...“
Optionen

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


bei Antwort benachrichtigen
malte simon ChrE „Hallo, Das verstehe ich nicht. Wie lautet die komplette Kommandozeile? Was geht...“
Optionen

Es geht nicht die spalten in Variablen zu übergeben.

test.py in.LST

bei Antwort benachrichtigen
ChrE malte simon „Es geht nicht die spalten in Variablen zu übergeben. test.py in.LST“
Optionen

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

bei Antwort benachrichtigen
malte simon ChrE „Hallo, Klar geht das. Man bräuchte nur EIN Beispiel. list line.split t Hier...“
Optionen

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.

bei Antwort benachrichtigen
ChrE malte simon „mein Ergebniss myfilebase.eu/code.txt Das mit der Datei funktioniert aber ich...“
Optionen

Hallo!

Oh, ich hatte gerade eine lange Leitung wegen der Links.

Ist das besser?
http://paste.pocoo.org/show/121966/

Gruss

ChrE

bei Antwort benachrichtigen
malte simon ChrE „Hallo! Oh, ich hatte gerade eine lange Leitung wegen der Links. Ist das besser?...“
Optionen

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!

bei Antwort benachrichtigen
malte simon Nachtrag zu: „der code myfilebase.eu/code.txt Ich habe in meinem Code den Fehler gefunden geht...“
Optionen

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

bei Antwort benachrichtigen
ChrE malte simon „Hi ich habe irgend wie noch ein Problem und zwar werden die Werte aus der Liste...“
Optionen

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

bei Antwort benachrichtigen
malte simon ChrE „Hallo! Vielleicht stören die Klammern. Ohne geht es auch:...“
Optionen

ich meinte das immer eine Zwischen raum allso ' ' dazwischen ist. Es scheint das mein Code nicht mit unicode text zurecht kommt.

bei Antwort benachrichtigen
ChrE malte simon „ich meinte das immer eine Zwischen raum allso dazwischen ist. Es scheint das...“
Optionen

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


bei Antwort benachrichtigen
ChrE malte simon „Textdatei mit x zielen und 3 Spalten mit bash oder VBS ausles“
Optionen

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

bei Antwort benachrichtigen