So versuche ich ein Python-Skript erstellen, die *.styles
und *.layout
Dateien durchsuchen und bestimmte Zeichenfolgen in diesen Dateien ersetzen wird. Ich habe eine Reihe von Dingen ausprobiert, aber ich kann nicht herausfinden, was ich tun sollte, und sogar andere Code-Beispiele online zu betrachten, macht es noch verwirrender zu verstehen.Batch Ersetzen Zeichenfolgen in Dateien mit Python
Hier ist, was ich derzeit in meinem Code habe;
#!/usr/bin/python3
# coding: utf-8
import os
import sys
import fileinput
f1 = open ('*.styles', 'r') # read *.styles
f2 = open ('*.styles', 'w') # write *.styles
f3 = open ('*.layout', 'r') # read *.layout
f4 = open ('*.layout', 'w') # write *.layout
for line in f1:
f2.write(line.replace('font-size=15','font-size=12')) # replace string for
f2.write(line.replace('font-size=14','font-size=12')) # files in *.styles
f2.write(line.replace('font-size=18','font-size=14'))
f2.write(line.replace('font-size=30','font-size=18'))
f2.write(line.replace('font-size=36','font-size=18'))
f2.write(line.replace('font-size=16','font-size=12'))
f2.write(line.replace('font-size=26','font-size=16'))
f2.write(line.replace('font-size=48','font-size=20'))
f2.write(line.replace('font-size=28','font-size=16'))
f2.write(line.replace('font-size=17','font-size=14'))
f2.write(line.replace('font-size=21','font-size=14'))
f1.close()
f2.close()
for line in f3:
f4.write(line.replace('font-size=15','font-size=12')) # replace string for
f4.write(line.replace('font-size=14','font-size=12')) # files in *.layout
f4.write(line.replace('font-size=18','font-size=14'))
f4.write(line.replace('font-size=30','font-size=18'))
f4.write(line.replace('font-size=36','font-size=18'))
f4.write(line.replace('font-size=16','font-size=12'))
f4.write(line.replace('font-size=26','font-size=16'))
f4.write(line.replace('font-size=48','font-size=20'))
f4.write(line.replace('font-size=28','font-size=16'))
f4.write(line.replace('font-size=17','font-size=14'))
f4.write(line.replace('font-size=21','font-size=14'))
f3.close()
f4.close()
print ("\n\n ## Done!\n\n")
sys.exit(0)
Ich wollte schließen ein „Möchten Sie Änderungen zu übernehmen mögen? [Y/n]“ mit einer einfachen Ja/Nein-Antwort von Benutzereingaben, aber das bekam ein wenig zu kompliziert mit, um herauszufinden, While True:
und While False:
Aussagen.
Wenn dieser Code Test für die Dateien ausgeführt wird, die ich testen möchte, wird nur ein Fehler angezeigt;
line 8, in <module>
f1 = open ('*.styles', 'r') # read *.styles
FileNotFoundError: [Errno 2] No such file or directory: '*.styles'
Ich möchte nur in der Lage sein, von der Befehlszeile aus so zu laufen;
$ string_search.py .
so ändert er alle Dateien im aktuellen Verzeichnis, das *.styles
und *.layout
Dateien in diesem Verzeichnis enthält, so dass Sie nicht über ein aktuelles Verzeichnis, gerade in der aktuellen Verzeichnissen und Ordnern angeben.
kopiert. Mögliches Duplikat von [Get a filtered files in a directory] (http: // stackoverflow.com/questions/2225564/get-a-filtered-list-of-files-in-directory) –
Ich weiß nicht, warum Sie all diese Informationen über String-Suche und While-Schleifen und alles andere, wenn Ihre Frage kocht unten enthalten zu einer Codezeile, die ein Problem verursacht. Bitte versuchen Sie, sich pro Post an eine Frage zu halten und verwenden Sie ein * minimales * überprüfbares Beispiel. –
@ Two-BitAlchemist - Sie vermissen den Punkt, und das ist eine Frage. Die Hauptfrage lautet: Wie kann ich Python dazu bringen, jede angegebene Datei zu durchsuchen und die angegebenen Zeichenfolgen in diesen bestimmten Dateien durch die neue Zeichenfolge zu ersetzen, mit der ich sie ersetzen möchte? Es geht um eine schnelle, einfache Lösung, die für viele Dateien mit einem schnellen Commit-Wechsel durchgeführt werden kann, wodurch die Zeit gespart wird, die jede Datei einzeln durchlaufen muss. –