0
i Python ziemlich neu bin und möchte einige Dateien von einem Ort zu einem anderen kopieren und einige Informationen in ihnen innerhalb einer MySQL-Datenbank zu speichern. Ich muss das Skript 2 mal ausführen, bis es funktioniert. Nach dem ersten Versuch stoppt es direkt nach der ersten Schleife. Wird es ein zweites Mal ausgeführt, ist alles zu Ende.Python-Skript endet zwischen 2 für Schleifen
import re, shutil, glob, os, MySQLdb
db = MySQLdb.connect(host = "localhost",user = "root",passwd = "xxx",db = "test")
x = db.cursor()
delete = """DELETE FROM import WHERE fehler = '1'"""
x.execute(delete) # clear the table
dest = 'local' # paths
path = 'local/*.txt' # paths
files = glob.glob(path) # paths
for orig in glob.glob(r'/mnt/sap01x/OUT/INT/success/*.txt'):
shutil.copy2(orig, dest) # copy all files from one to another dir
for file in files: # starting to scan the files
f = open(file, 'r')
lines = f.read()
output = re.search(r'error', lines) # regexp to search for 'error'
if output:
query = """INSERT INTO import (Fehler,Filename) VALUES ("1","%s")"""
x.execute(query, file) # insert error to db
db.commit()
os.remove(file) # remove file
else:
os.remove(file) # remove file
db.close()
Kann jemand beraten, was ich falsch mache?
Sie listen die Dateien, bevor Sie sie kopieren. Daher ist 'files' eine leere Liste. Entweder bewegt 'files = glob.glob (Pfad)' zwischen den beiden Schleifen oder, besser, einfach bauen eine Liste aller Dateien, die Sie in der ersten Schleife kopieren und verwenden, die in den zweiten ('files = []' vor dem erste Schleife, 'files.append (dest)' in der ersten Schleife. – spectras
Als Nebenbemerkung, nie schließen Sie 'f' in Ihrer zweiten Schleife. Es wird beschädigt, wenn Sie zu viele Dateien in Ihrem Verzeichnis haben. – spectras