Umlaute durch Stringopreation verändert

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.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Umlaute durch Stringopreation verändert

Beitragvon Mr_Snede » Dienstag 9. August 2005, 12:16

Hi,
Ich möchte eine Dateistruktur in der die Datei- / Ordnernamen nicht in einem einheitlichem Zeichensatz vorliegen ändern, dass alles einem Zeichensatz (iso8859-15) entspricht.
Dazu habe ich schon ein Tool gefunden convmv. Mein Problem ist nun dass leider nicht alle Änderungsvorschläge von convmv richtig sind.

Jetzt kommt Python ins Spiel. Mit convmv kann ich eine Datei erzeugen die wie folgt aufgebaut ist:

Code: Alles auswählen

 mv "pfad/alterDateiname" "pfad/neuerDateiname"


Ich möchte daraus nun ein "Frage / Antwortspiel" für die Shell machen.
Mein Script soll mir den aktuellen Dateinamen und darunter den neuen Dateinamen ausgeben. Damit ich dann entscheiden kann, ob noch Änderungen am neuen Dateinamen vorgenommen werden müssen, oder ob die Änderungen so übernommen werden können.

Bisher hebe ich:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso8859-15 -*-

import sys, os, string

Eingabe_Datei = file('/home/sabba/mnt/daten-alle/umlauts.txt', 'r')
for Zeile in Eingabe_Datei:
   print Zeile.replace('\n','')
   eintrag = Zeile.split('"   "/')
   links = eintrag[0].replace('mv "','')
   pfad,alt = os.path.split(links)
   weg,neu = os.path.split(links)
   print 'pfad ', pfad
   print 'alt ', alt
   print 'neu', neu
Eingabe_Datei.close()


Das Problem ist nun, wie im folgenden Beispiel zu sehen, dass auch vorher richtige Änderungsvorschläge durch mein Script wieder zu Nichte gemacht werden. (Abgründe -> Abgrnde)

Code: Alles auswählen

mv "Insignium/02. In die Abgrnde" "/Insignium/02. In die Abgründe"
pfad /Insignium
alt 02. In die Abgrnde
neu 02. In die Abgrnde


Hat jemand eine Idee?

cu sebastian
BlackJack

Re: Umlaute durch Stringopreation verändert

Beitragvon BlackJack » Dienstag 9. August 2005, 22:22

Mr_Snede hat geschrieben:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso8859-15 -*-

import sys, os, string

Eingabe_Datei = file('/home/sabba/mnt/daten-alle/umlauts.txt', 'r')
for Zeile in Eingabe_Datei:
   print Zeile.replace('\n','')
   eintrag = Zeile.split('"   "/')
   links = eintrag[0].replace('mv "','')
   pfad,alt = os.path.split(links)
   weg,neu = os.path.split(links)
   print 'pfad ', pfad
   print 'alt ', alt
   print 'neu', neu
Eingabe_Datei.close()


Das Problem ist nun, wie im folgenden Beispiel zu sehen, dass auch vorher richtige Änderungsvorschläge durch mein Script wieder zu Nichte gemacht werden.


Das Hauptproblem ist, das sowohl `alt` als auch `neu` gleich sind, nämlich den alten Eintrag enthalten wenn ich das richtig sehe. Was nicht weiter verwunderlich ist, weil beide das Ergebnis des gleichen Funktionsaufrufs zugewiesen bekommen.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Beitragvon Mr_Snede » Mittwoch 10. August 2005, 06:49

Du glaubst ja nicht, wie peinlich mir das ist.
mit

Code: Alles auswählen

for Zeile in Eingabe_Datei:
    print Zeile.replace('\n','')
    eintrag = Zeile.split('"   "/')
    links = eintrag[0].replace('mv "','')
    rechts = eintrag[1]
    pfad,links_split = os.path.split(links)
    weg,rechts_split = os.path.split(rechts) 
    print 'pfad    ', pfad
    print 'alt       ', links_split
    print 'rechts', rechts_split

funktioniert es nun. Ich habe das Umlauteproblem auf dem Server mittlerweile (von Hand) gelöst.

Herzlichen Dank BlackJack.

cu Sebastian

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder