ich bin blutiger Anfänger in Python und gehe den Weg "learning by doing".
Wa will ich eigentlich machen?
Ich möchte einen Ordner überwachen und wenn darin eine Textdateie erstellt wird, möchte ich in dieser das #-Zeichen durch ein |-Zeichen ersetzen.
Zu erst einmal, ich habe Windows. Dann habe ich habe unter c:\ das Script zeichen_ersetzen.py
Der Ordner der überwacht werden soll ist C:\test
Das Ersetzen funktioniert so sehr schön:
Code: Alles auswählen
import os, sys
path = "C:\\test"
FileName=""
for root, dirs, files in os.walk(path):
for filename in files:
if filename.endswith(".txt"): #alle Dateien die auf *.txt enden
FileName=filename
with open(FileName) as f:
newText=f.read().replace('#','|') # alle #-Zeichen durch | erstezen
with open(FileName, "w") as f: # wieder in die Datei schreiben
f.write(newText)
Code: Alles auswählen
import os, sys
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
path = "C:\\test"
FileName=""
class MyHandler(PatternMatchingEventHandler):
patterns = ["*.txt"]
def process(self, event):
"""
event.event_type
'modified' | 'created' | 'moved' | 'deleted'
event.is_directory
True | False
event.src_path
path/to/observed/file
"""
# the file will be processed there
print (event.src_path, event.event_type) # print now only for degug
for root, dirs, files in os.walk(path):
for filename in files:
if filename.endswith(".txt"): #alle Dateien die auf *.txt enden
FileName=filename
with open(FileName) as f:
newText=f.read().replace('#','|') # alle #-Zeichen durch | erstezen
with open(FileName, "w") as f: # wieder in die Datei schreiben
f.write(newText)
def on_created(self, event):
self.process(event)
if __name__ == '__main__':
args = sys.argv[1:]
observer = Observer()
observer.schedule(MyHandler(), path)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Kann mir jemand sagen wo der Fehler liegt?