Änderung im Verzeichnis ausschließen

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
André Lieske
User
Beiträge: 5
Registriert: Sonntag 13. März 2016, 09:14
Wohnort: Berlin

Hallo Profis,
ich arbeite mit Notepad++ und Python-Script.
der nachfolgende Code ersetzt Inhalte von Dateien in mehreren Verzeichnissen
Funktioniert auch ohne Probleme, habe aber ein Unterverzeichnis "broker" das nicht geändert werden soll.
Wie kann ich erreichen das, dass Verzeichnis nicht geändert wird?

Code: Alles auswählen

import os;
import sys;
###################################################################
# Pfad zum Stage-Ordner von SmartStore                            #
# Pfad bitte anpassen!                                            #
# Die doppelten Backslashes ( \\ ) im Pfad muessen vorhanden sein #
###################################################################

filePathSrc="C:\\Users\\Andre\\Documents\\SmartStore.biz Projekte\\SM6\\Lieske Andre\\Stage\\" 


###############################
# AB HIER NICHTS MEHR AENDERN #
###############################

for root, dirs, files in os.walk(filePathSrc):
    for fn in files:
        if fn[-4:] == '.php': 
            notepad.open(root + "\\" + fn)
            notepad.runMenuCommand("Kodierung", "Konvertiere zu ANSI")
            notepad.runMenuCommand("Kodierung", "Konvertiere zu UTF-8 ohne BOM")
            editor.replace('iso-8859-1', 'UTF-8')
            notepad.save()
            notepad.close()       
Besten Dank im voraus.
Gruss André
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@André Lieske: walk liefert in jedem Schritt eine Liste dirs, die man auch verändern und somit auswählen kann, welche Unterverzeichnisse durchwandert werden sollen.

Code: Alles auswählen

import os

FILEPATH = "C:\\Users\\Andre\\Documents\\SmartStore.biz Projekte\\SM6\\Lieske Andre\\Stage\\" 

def convert(filename):
    with open(filename, 'rb') as input:
        text = input.read().decode('iso-8859-1')
    text = text.replace('iso-8859-1', 'UTF-8')
    with open(filename + '.xxx', 'wb') as output:
        output.write(text.encode('UTF-8'))
    os.rename(filename + '.xxx', filename)

for root, dirs, files in os.walk(FILEPATH):
    dirs[:] = [d for d in dirs if d != 'broker']
    for filename in files:
        if filename.endswith('.php'):
            convert(os.path.join(root, filename))
André Lieske
User
Beiträge: 5
Registriert: Sonntag 13. März 2016, 09:14
Wohnort: Berlin

Hallo Sirius3,
danke für das Feedback.
Das Scrip läuft bei mir leider nicht,
Woran kann das liegen?

Müssen die doppelten Backslashes noch sein?
Besten Dank im voraus.
Gruss André
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@André Lieske: ohne Fehlermeldung kann man da ja nicht sagen, warum etwas nicht läuft.
André Lieske
User
Beiträge: 5
Registriert: Sonntag 13. März 2016, 09:14
Wohnort: Berlin

Hallo Sirius3,
leider gibt es keine Fehlermeldung, hätte diese gepostet.
Ich merke es daran das die Dateien nicht geöffnet werden.
Besten Dank im voraus.
Gruss André
BlackJack

@André Lieske: Nur um Missverständnisse zu vermeiden: Surius3 hat ein eigenständiges Python-Programm geschrieben. Also falls Du erwartest, das Notepad++ da jetzt irgendwas macht (Fenster/Tabs öffnen beispielsweise), das tut es natürlich nicht.
André Lieske
User
Beiträge: 5
Registriert: Sonntag 13. März 2016, 09:14
Wohnort: Berlin

Hallo BlackJack,
davon bin ich ausgegangen, das der Copde unter Notepad++ funktioniert.
Dann hilft mir das nicht weiter.
Wie kann ich das unter Notepad bewerkstelligen?
Besten Dank im voraus.
Gruss André
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@André Lieske: dass Du nihts siehst, heißt ja nicht, dass es nicht funktioniert.
André Lieske
User
Beiträge: 5
Registriert: Sonntag 13. März 2016, 09:14
Wohnort: Berlin

Hallo Sirius3,
das stimmt, die Dateien sind aber unverändert.
Besten Dank im voraus.
Gruss André
Antworten