Seite 1 von 5

Dateinamen in jede Zeile schreiben

Verfasst: Montag 17. November 2014, 20:57
von kidchino
Hi zusammen,

ich bin ganz neu hier und habe nun ein 13 Stunden Tutorial (von Galileo) durch und komme trotzdem nicht alleine weiter.
Mein Problem:

Ich habe ca. 20.000 TXT-Dateien. Hier sind die Spalte mit \t und die Zeilen mit \n getrennt.
Nun will ich in jede Datei in jeder Zeile den jeweiligen Dateiname (als extra Spalte) hinten dran setzen. Aber irgendwie bin ich zu doof.
Ich dachte erstmal "step by step", also erstmal für eine Datei und daher hab ich dann den Anfang ausge-"""-t.
Die erste Zeile möchte ich immer löschen, weil das eine Art Überschrift ist.
Die Beispieldatei heißt: NEW001#1##accenture (keine Endung).
Hat jemand eine Idee?
In der For-Schleife kommt dann immer Fehler
VG
KID

Code: Alles auswählen

# -*- coding: utf-8 -*-
import os, sys

"""
# relevanter Pfad mit Dateien
Pfad = 'C:/papererweiterung/'

# Pfad zu den txt Dateien 'Pfad'
path = os.listdir(Pfad)

os.chdir(Pfad) # wechsel in diesen Pfad für alle Ausführungen 
liste = [] # erstelle eine leere Liste
for datei in path:   # für jedes Element der Variable path - mach folgendes
    d = open(datei).read() # öffne und lese alle Elemente des Objekts pat und speicher sie in der Variable 
    a = d.split("\n")
    print(a[0])   
   """    
d = open('C:/papererweiterung/NEW001#1##accenture').read() # öffne und lese alle Elemente des Objekts pat und speicher sie in der Variable d
lines = d.split("\n") #Zeilen mit Zeilenumbruch voneinander getrennt
del lines[0]    #Hier wird die erste Zeile gelöscht
for line in lines:
    l = lines.split("\t")
    l.add("\tXXX_DATEI_XXX")
    print(lines[0])   
 
    
    
#print (lines[0])




Re: Dateinamen in jede Zeile schreiben

Verfasst: Montag 17. November 2014, 21:04
von Sirius3
@kidchino: was für eine Fehlermeldung kommt denn? Welche Methoden zum Hinzufügen haben denn Listen? Und was willst mit l anfangen?

Re: Dateinamen in jede Zeile schreiben

Verfasst: Montag 17. November 2014, 21:53
von kidchino
Hi Sirius,

das ist der Fehler.

Traceback (most recent call last):
File "C:\Python34\test.py", line 22, in <module>
l = lines.split("\t")
AttributeError: 'list' object has no attribute 'split'

@Methoden:
Eigentlich append oder. Aber damit ging es auch nicht und dann hab ich es mit add. versucht.

Mit "l" wollte ich die Tab-Stop-getrennte Zeile aussplitten. Also die Zeile in Elemente unterteilen und am Ende erstmal ""\tXXX_DATEI_XXX"" und später dann den Dateinamen,d er eingelesenen Datei.

Eigentlich will ich ja:
lines[0].append
lines[1].append
....
lines[n].append
aber ich weiß nicht, wie ich den Laufindex da rein bekomme.

Code: Alles auswählen

for i in lines:
    lines[i].append("\tXXX_DATEI_XXX")
VG
kid

Re: Dateinamen in jede Zeile schreiben

Verfasst: Montag 17. November 2014, 22:14
von BlackJack
@kidchino: Und was ist an der Fehlermeldung jetzt unklar? Listen haben nun mal keine `split()`-Methode. Einen Laufindex musst Du auch nirgends hinein bekommen. Schau Dir doch mal an was `i` in der Schleife für Werte annimmt. Und dann nimm bitte einen besseren Namen für diese Werte, denn bei `i` erwarten die meisten Programmierer das es sich um ganze Zahlen handelt, insbesondere wenn der Name in einer Schleife verwendet wird.

Du möchtest vielleicht ein Grundlagentutorial durcharbeiten. Entweder das Videotutorial noch mal oder ein geschriebenes. Insbesondere aber nicht nur passiv konsumieren, sondern auch selber ausprobieren, und nebenbei auch mal in der Dokumentation lesen was zu den Funktionen, Datentypen, und Methoden dort steht.

Um CSV-Dateien zu lesen und zu schreiben gibt es in der Standardbibliothek das `csv`-Modul.

Re: Dateinamen in jede Zeile schreiben

Verfasst: Montag 17. November 2014, 23:02
von kidchino
@BlackJack:
Danke:

Code: Alles auswählen

# -*- coding: utf-8 -*-
import os, sys, csv

# relevanter Pfad mit Dateien
Pfad = 'C:/papererweiterung/'

# Pfad zu den txt Dateien 'Pfad'
path = os.listdir(Pfad)

os.chdir(Pfad) # wechsel in diesen Pfad für alle Ausführungen 
liste = [] # erstelle eine leere Liste
for datei in path:   # für jedes Element der Variable path - mach folgendes
    #d = open(datei).read() # öffne und lese alle Elemente des Objekts pat und speicher sie in der Variable 
    
    with open(datei, newline='') as f:
        reader = csv.reader(f, delimiter="\t")
        for row in reader:
            row.append(datei)
            print (row)
So klappt es erstmal: Jetzt bekomme ich leider nicht die erste Zeile jeder Datei raus.

Aber ist die Richtung besser?


VG

Re: Dateinamen in jede Zeile schreiben

Verfasst: Montag 17. November 2014, 23:29
von BlackJack
@kidchino: Das ist etwas besser, dafür gibt es jetzt andere Baustellen. `Pfad` und `path`? Das ist doch eigentlich das gleiche nur in unterschiedlichen Sprachen. Jetzt muss man sich merken welcher Name an was gebunden ist obwohl beide von der Bedeutung her den gleichen Namen haben. `path` ist natürlich falsch als Name denn der Wert der daran gebunden ist, ist kein Pfad sondern eine Liste mit Dateinamen. Da soll mal einer drauf kommen.

`os.chdir()` sollte man nicht verwenden. Das verändert den globalen Zustand eines Prozesses und man kann das deshalb nur an einer Stelle im Programm machen. Das skaliert also nicht vernünftig sowie man mit mehr als nur einem Pfad arbeiten muss. Es ist besser die Pfade und Dateinamen die man braucht mit `os.path.join()` zusammenzusetzen.

Konkrete Typen sollte man nicht in Namen haben, zudem ist `liste` ein sehr generischer Name. Dadurch weiss der Leser nicht was die Bedeutung dieser Liste beziehungsweise ihrer Elemente ist.

`datei` ist wieder ein unpassender Name weil es sich nicht um ein Datei-Objekt handelt, sondern um einen Datei*namen*.

Mit der `next()`-Funktion bekommt man das nächste Element aus einem Iterator und setzt ihn damit quasi ein Element weiter. So kann man die erste Zeile aus dem `reader`-Objekt ”loswerden”.

Jetzt muss man nur noch vor der Schleife eine temporäre Datei öffnen und das Ergebnis über einen `csv.writer` in diese Datei schreiben und die Datei dann am Ende zur Originaldatei umbenennen, wenn man die Datei(en) durch die Veränderten Versionen ersetzen möchte.

Vorher vielleicht eine Sicherheitskopie anlegen, damit bei Fehlern keine Daten verloren gehen.

Edit: Ungetestet(!):

Code: Alles auswählen

#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
import csv
import os
from tempfile import NamedTemporaryFile

DELIMITER = '\t'
PATH = 'C:/papererweiterung'


def main():
    for filename in os.listdir(PATH):
        full_name = os.path.join(PATH, filename)
        temporary_file = NamedTemporaryFile(
            prefix=filename, dir=PATH, delete=False
        )
        with temporary_file:
            with open(full_name) as csv_file:
                csv.writer(temporary_file, delimiter=DELIMITER).writerows(
                    row + [filename]
                    for row in csv.reader(csv_file, delimiter=DELIMITER)
                )
        os.rename(temporary_file.name, full_name)


if __name__ == '__main__':
    main()

Re: Dateinamen in jede Zeile schreiben

Verfasst: Dienstag 18. November 2014, 09:42
von kidchino
Hallo BlackJack,

danke für die Tipps. Die Benennung macht natürlich wirklich Sinn. Wenn ich es mir in einem Monat angeschaue müsste ich wieder von vorn anfangen ;)

Ich hab jetzt viel geändert, bin leider aber immer noch nicht am Ziel:

Code: Alles auswählen

# -*- coding: utf-8 -*-
import os, sys, csv

# relevanter Pfad mit Dateien
pfad = 'C:/papererweiterung/'

# Pfad zu den txt Dateien 'Pfad'
liste_dateiname = os.listdir(pfad)

os.path.join(pfad) # wechsel in diesen Pfad für alle Ausführungen 
liste = [] # erstelle eine leere Liste
for dateiname in liste_dateiname:   # für jedes Element der Variable path - mach folgendes
        
    with open(dateiname, newline='') as f: #öffnet die jeweilge datei
        reader = csv.reader(f, delimiter="\t") #liest die zeilen aus
        #reader.next() #überspringt jeweils die erste zeile
        #writer = csv.writer(f)
        #writer.writerows(someiterable)
        for row in reader: # schleif für jede zeile
            row.append(dateiname) #schreibt in jede zeile hinten den dateinamen dran
            print (row) # testausgabe

Durch

Code: Alles auswählen

os.path.join(pfad) 
kommt der Fehler:
Traceback (most recent call last):
File "C:\Python34\test.py", line 15, in <module>
with open(dateiname, newline='') as f: #öffnet die jeweilge datei
FileNotFoundError: [Errno 2] No such file or directory: 'NEW001#1##accenture'
und durch

Code: Alles auswählen

reader.next() 
der hier:
Traceback (most recent call last):
File "C:\Python34\test.py", line 16, in <module>
reader.next() #überspringt jeweils die erste zeile
AttributeError: '_csv.reader' object has no attribute 'next'
@path.join:
Kann es sein, dass der "No such file"-Fehler daraus folgt, dass die Dateien keine Endung haben?
Ich hab mal eine Beispiel-Datei verlinkt. Vielleicht ist das modul dafür nicht geeignet.
https://dl.dropboxusercontent.com/u/727 ... enture.rar

@next():
Das hatte ich gestern nacht auch ausprobiert aber leider nicht erfolgreich.

VG
kid

Re: Dateinamen in jede Zeile schreiben

Verfasst: Dienstag 18. November 2014, 10:11
von Sirius3
@kidchino: os.path.join wechselt nicht das Verzeichnis, das will man ja auch gar nicht. Du mußt den Dateinamen mit dem Pfad beim Öffnen kombinieren:

Code: Alles auswählen

...
with open(os.path.join(pfad, dateiname)) as f:
    ...
"reader.next" heißt wohl unter Python3 "next(reader)".

Re: Dateinamen in jede Zeile schreiben

Verfasst: Dienstag 18. November 2014, 10:49
von kidchino
@ Sirius.
Super vielen Dank.

Ich hänge hinten an die Zeile ja den Namen ran.
In dem Schritt könnte ich den eigentlich gleich teilen, dann muss ich das nicht später nochmal machen.

Der Name "NEW001#1##name" hat immer drei Informationen die ich auf drei Spalten verteilen will.
1) Erst alles bis zum "#".
2) Dann alles zwischen "#" und "##".
3) Und dann alles nach dem "##".

Welche Variante würdet Ihr empfehlen oder keine von beiden?

Code: Alles auswählen

        #variante1 - trennung von NEW001#1##name
            teil = dateiname.split("#")
            row.append(teil[0])
            row.append(teil[1])
            row.append(teil[3])            
            print (teil) # testausgabe

        #variante2 - trennung von NEW001#1##name
            row.append(teil[0])
            row.append(teil[1])
            teil2 = dateiname.split("##")
            row.append(teil2[1])            
            print (teil) # testausgabe
            print (teil2) # testausgabe


VG und danke für eure Zeit
Kid

Re: Dateinamen in jede Zeile schreiben

Verfasst: Dienstag 18. November 2014, 13:16
von Sirius3
@kidchino: die Variante mit sinnvollen Namen:

Code: Alles auswählen

new_part, number, _, name = dateiname.split("#")
row.extend([new_part, number, name])

Re: Dateinamen in jede Zeile schreiben

Verfasst: Dienstag 18. November 2014, 21:28
von kidchino
@sirius: Vielen vielen Dank.
@BlackJack: Auch Dir vielen Dank. Du hattest mir ja ein ganzes Skript zum "Schreiben" geschrieben. Vielen Dank! Das hatte ich nicht gesehen. Leider verstehe ich es auch nicht wirklich.
BlackJack hat geschrieben:@kidchino:
Edit: Ungetestet(!):

Code: Alles auswählen

#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
import csv
import os
from tempfile import NamedTemporaryFile

DELIMITER = '\t'
PATH = 'C:/papererweiterung'


def main():
....
Ich hatte es nun mit Eure Hilfe so gebastelt und auch die Herangehensweise geändert und versuche jetzt alle Zeile (alle Dateien) in eine einzelne Datei zu kopieren.
Das wäre der nächste Schritt gewesen aber ich dachte, dass es vielleicht einfach ist, diese Schritt bereit hier zu implementieren.

Code: Alles auswählen

# -*- coding: utf-8 -*-
import csv, os, sys

# relevanter Pfad mit Dateien
pfad = 'C:/papererweiterung/'

# Pfad zu den txt Dateien 'Pfad'
liste_dateiname = os.listdir(pfad)

#liste = [] # erstelle eine leere Liste
gesamte_datei = open('C:/papererweiterung/NeueNamenListe.csv',"w") #ZUM SPEICHERN
for dateiname in liste_dateiname:   # für jedes Element der Variable path - mach folgendes
        
    with open(os.path.join(pfad, dateiname)) as f: #öffnet die jeweilge datei
        reader = csv.reader(f, delimiter="\t") #liest die zeilen aus
        next(reader) #überspringt jeweils die erste zeile
        #new_datei = open(os.path.join(pfad, dateiname) + "_new","w")
                
        for row in reader: # schleif für jede zeile
            row.append(dateiname)#schreibt in jede zeile hinten den vollen dateinamen dran
            compid, nummer, _, subname = dateiname.split("#") #"splittet" den namen mit der Trennung "#"
            row.extend([compid, nummer, subname]) #setzt den geteilten Dateinamen in die letzten drei Spalten
            writer = csv.writer(gesamte_datei, delimiter = "\t")#ZUM SPEICHERN
            writer.writerows(row)#ZUM SPEICHERN
#print (row) #testausgabe
Leider kommt hier immer der Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python34\test.py", line 16, in <module>
    next(reader) #überspringt jeweils die erste zeile
StopIteration
Und die Ausgabe ist irgendwie Quatsch:

Code: Alles auswählen

J

D,u,",", ,K,;, ,F,a,i,r,w,e,a,t,h,e,r,",", ,G,;, ,N,g,u,y,e,n,",", ,Q,N,;, ,S,u,n,",", ,W,W


D,u,",", ,K,u,i,;, ,F,a,i,r,w,e,a,t,h,e,r,",", ,G,r,a,e,m,e,;, ,N,g,u,y,e,n,",", ,Q,u,e, ,N,.,;, ,S,u,n,",", ,W,e,i,w,e,i

M,a,t,r,i,x, ,d,e,c,o,m,p,o,s,i,t,i,o,n, ,a,l,g,o,r,i,t,h,m,s, ,f,o,r, ,t,h,e, ,C,-,0,-,q,u,a,d,r,a,t,i,c, ,f,i,n,i,t,e, ,e,l,e,m,e,n,t, ,G,a,l,e,r,k,i,n, ,m,e,t,h,o,d

B,I,T, ,N,U,M,E,R,I,C,A,L, ,M,A,T,H,E,M,A,T,I,C,S


E,n,g,l,i,s,h

A,r,t,i,c,l,e
Das Skript setzt anstelle eines "\t" ein "\n" und zwischen jedes Zeichen ein ",".
Irgendwie ist die Formatierung der Datei jetzt auch "UTF-8w/o BOM" "Mac". Die eingelesen Dateien hatten "UTF-8 Dos\Windows"
Denkt ihr das der Fehler beim Speichern liegt oder schon vorher?

VG
Und euch jetzt schon vielen Dank für die ganzen Mühen
kid

Re: Dateinamen in jede Zeile schreiben

Verfasst: Dienstag 18. November 2014, 22:40
von kidchino
Hi,

jetzt bin ich schon ein Stück weiter. Glaube ich ;)

Die "liste" ist das was ich eigentlich als "gesamte_datei" speichern will.
Halt jedes Element der "liste" als eine Zeile.
Es kommt aber trotzdem nur "murx" raus

Code: Alles auswählen

# -*- coding: utf-8 -*-
import csv, os, sys

# relevanter Pfad mit Dateien
pfad = 'C:/papererweiterung/'

# Pfad zu den txt Dateien 'Pfad'
liste_dateiname = os.listdir(pfad)



liste = [] 
gesamte_datei = open('C:/papererweiterung/NeueNamenListe.csv',"w")  #ZUM SPEICHERN
for dateiname in liste_dateiname:   # für jedes Element der Variable path - mach folgendes
        
    with open(os.path.join(pfad, dateiname)) as f: #öffnet die jeweilige datei
        reader = csv.reader(f, delimiter="\t") #liest die zeilen aus
        #next(reader) #überspringt jeweils die erste zeile
        #new_datei = open(os.path.join(pfad, dateiname) + "_new","w")
                
        for row in reader: # schleife für jede zeile
            row.append(dateiname)#schreibt in jede zeile hinten den vollen dateinamen dran
            compid, nummer, _, subname = dateiname.split("#") #"splittet" den namen mit der Trennung "#"
            row.extend([compid, nummer, subname]) #setzt den geteilten Dateinamen in die letzten drei Spalten
            liste.append(row)
            writer = csv.writer(gesamte_datei, delimiter = "\t")#ZUM SPEICHERN
            writer.writerows(liste)#ZUM SPEICHERN

print (liste) #testausgabe
VG
kid

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 11:35
von BlackJack
@kidchino: Du musst Dir klarmachen was in welcher Reihenfolge gemacht wird, wie oft die einzelnen Anweisungen ausgeführt werden, und welche Werte da jeweils an die beteiligten Namen gebunden sind. Ausgaben der Werte an strategisch günstigen Stellen können da hilfreich sein um das was man erwartet mit dem zu vergleichen was das Programm tatsächlich tut. Also zum Beispiel wie oft wird der Inhalt der Liste in die Datei geschrieben und was enthält sie zu jedem dieser Zeitpunkte, und macht das wirklich Sinn‽

Ebenfalls hilfreich ist es das Problem in kleinere Teilprobleme zu unterteilen, falls nötig die Teilprobleme noch mal feiner unterteilen. So lange bis man ein Teilproblem hat welches man mit einer einfachen Funktion lösen kann. Die schreibt man dann, und testet ob sie funktioniert. Und aus den getesteten Teillösungen kann man dann eine grössere Teillösung zusammensetzen und testen, solange bis man das gesamte Problem gelöst hat.

Übliche ”Trennlinien” sind zum Beispiel Eingabe, Verarbeitung, und Ausgabe einzeln zu Programmieren. Und bei Wiederholungen erst einmal die Einzelschritte als Funktionen zu implementieren. Wenn man beispielsweise etwas hat was für mehrere Dateien gemacht werden muss, dann kann man das Problem erst einmal für *eine* Datei lösen und dann diese Lösung auf jede Datei anwenden.

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 12:51
von kidchino
Danke!

Habe es mir jetzt aufgezeichnet (mit Zettel und Bleistift :) ) als Prozess und schnell gemerkt, dass Zeile 26. und 27. nicht in die Schleifen gehören.
Hatte auch immer schon den Debugger genutzt und häufig einfach mal print gesetzt.

Jetzt probiere ich mal weiter.
Habe noch drei konkrete Probleme. Wenns geklappt hat melde ich mich wieder.
Danke!

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 15:01
von kidchino
Hi zusammen,

beide print-Befehle geben jeweils die richtige Liste aus.
Aber gespeichert bekomme ich die Liste nicht. Dort wird immer eine Leerzeile einfügen und die letzte Eintrag der letzten eingelesenen Datei wird nicht übernommen, obwohl er in der liste ist.
Jemand ne Idee?
Muss ich evtl. das Format der CSV anpassen? Ich hatte geschaut, verstehe aber leider nicht ganz. Hat es was mit "dialect" zu tun ( csv.writer(csvfile, dialect='excel', **fmtparams) )?

VG


Code: Alles auswählen

# -*- coding: utf-8 -*-
import csv, os, sys

# relevanter Pfad mit Dateien
pfad = 'C:/papererweiterung/'

# Pfad zu den txt/csv Dateien 'Pfad'
liste_dateiname = os.listdir(pfad)

liste = [] 
gesamte_datei = open('C:/papererweiterung1/NeueNamenListe.csv', "w")  #öffne die gesamte Datei
for dateiname in liste_dateiname:   # für jedes Element der Variable path - mach folgendes
        
    with open(os.path.join(pfad, dateiname)) as f: #öffnet die jeweilige datei
        reader = csv.reader(f, delimiter="\t") #liest die zeilen aus
        next(reader) #überspringt jeweils die erste zeile #hier kommt ein fehler
        #new_datei = open(os.path.join(pfad, dateiname) + "_new","w")
        #print (liste) #testausgabe        
        for row in reader:            
            row.append(dateiname)#schreibt in jede zeile hinten den vollen dateinamen dran
            compid, nummer, _, subname = dateiname.split("#") #"splittet" den namen mit der Trennung "#"
            row.extend([compid, nummer, subname]) #setzt den geteilten Dateinamen in die letzten drei Spalten
            liste.append(row)
print (liste) #testausgabe
writer = csv.writer(gesamte_datei, delimiter = "\t")#ZUM SPEICHERN
#print (liste) #testausgabe
writer.writerows(liste)#ZUM SPEICHERN

print (liste) #testausgabe

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 15:07
von BlackJack
@kidchino: Das mit den Leerzeilen wird wahrscheinlich daran liegen das Windows Textdateien anders behandelt als Binärdaten. Für das `csv`-Modul solltest Du die Dateien im Binärmodus öffnen damit Windows die Daten beim lesen/schreiben nicht verändert. Zum lesen ist das 'rb' und zum schreiben 'wb'.

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 16:31
von kidchino
@BlackJack:
BlackJack hat geschrieben:Zum lesen ist das 'rb' und zum schreiben 'wb'
Das habe ich probiert, aber dann kommt der Fehler:

Code: Alles auswählen

File "C:\Python34\test.py", line 16, in <module>
    next(reader) #überspringt jeweils die erste zeile #hier kommt ein fehler
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Ich öffne aber sowohl Datei zum Lesen als auch zum Schreiben in/ oder mit "wb" bzw. "rb"

Code: Alles auswählen

gesamte_datei = open('C:/papererweiterung1/NeueNamenListe.csv', "wb")  #öffne die gesamte Datei
for dateiname in liste_dateiname:   # für jedes Element der Variable path - mach folgendes
        
    with open(os.path.join(pfad, dateiname), "rb") as f: #öffnet die jeweilige datei
Wenn ich "wt" und "rt" nutze komme kein Fehler aber die "Leerzeilen bleiben erhalten. "CR" am Ende jeder Zeile und dann folgend "CR""LF".
Das Format ist auch wieder "UTF-8 w/o BOM".
Hast du da noch ne idee?
Kann man das Format der Ursprungsdatei evtl. einlesen und sagen, dass die write-Datei das gleiche Format haben soll?

VG
kid

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 17:29
von /me
Gib beim Öffnen der Datei noch das Encoding mit an (encoding='UTF-8').

Mich irritiert zudem, dass dein Skript offensichtlich im Python-Programmfolder liegt. Da gehört es nicht hin! Finger weg von diesem Ordner und seinen Unterordnern!

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 17:50
von kidchino
@ /me. Danke für den Tipp.
/me hat geschrieben:(encoding='UTF-8').!
Aber auch das funktioniert leider nicht.
Ich bekomme diese blöden Leerzeilen nicht weg.

Re: Dateinamen in jede Zeile schreiben

Verfasst: Mittwoch 19. November 2014, 20:47
von kidchino
Kann ein Grund sein, dass in den Input-Dateien teilweise Zellen leer sind, also Tabstop aufeinanderfolgen? Oder dass die einzelnen Elemente auch Sonderzeichen (bspw. ;[]#) enthalten?