Erfahrungen mit Python sind bei mir bisher nur rudimentär vorhanden. Andere Programmiersprachen kenne ich nicht unbedingt (früher habe ich mal Basic (ja: das Basic für den C64) und Turbo Pascal programmiert.
Das Skript hat noch viel Verbesserungspotential, aber nachdem ich am Wochenende mit einem Handbuch über Python angefangen habe, bin ich doch stolz, es so weit gebracht zu haben. Das liegt wohl aber auch an der Einfachheit von Python, wenn aber die Einbindung von _mysql mich doch einige Nerven gekostet hat.
Hier das Skript:
Code: Alles auswählen
import sys, os, pathlib, _mysql
pfad_all = (r'\\server\unc01',r'\\server\unc02')
print ("Version 1.6")
c = _mysql.connect('db', 'user','pwd', db='datei_sql')
c.query("DELETE FROM `files` WHERE 1")
z = 0
for pfad in pfad_all:
if os.path.exists(pfad) == True:
print(pfad, "existiert.")
else:
print(pfad, "existiert nicht.")
for t in os.walk(pfad):
(dirs, subdirs, files) = t
for filename in files:
z = z+1
sql = ("INSERT INTO files VALUES ('$1','$2','$3','$4','$5','$6','$7')")
# 1 = Nummer, count
# 2 = servername, unc
# 3 = path nach unc
# 4 = filename
# 5 = filesize,
# 6 = filname+path, , kompletter pfad mit dateiname
# 7 = Dateiendung
a = str(z)
f = str(dirs)+"\\"+(filename)
s=os.path.getsize(f)
filepath = dirs.replace('\\','\\\\')
servername = pfad.replace('\\','\\\\')
dateiname = filename.replace("'","_")
path_filename=filepath+"\\\\"+dateiname
filetype=dateiname[-3:]
filetype=filetype.replace(".","")
b = len(servername)
x = filepath[b:]
sql = sql.replace('$1', a)
sql = sql.replace('$2', servername)
sql = sql.replace('$3', x)
sql = sql.replace('$4', dateiname)
sql = sql.replace('$5', str(s))
sql = sql.replace('$6', path_filename)
sql = sql.replace('$7', filetype)
c.query(sql)
c.commit
print ("Es wurden ", z, "Dateien gezählt")
print ("Done")
c.close
1.) Prüfen, ob auch richtig gezählt wird. (Bisher stimmt es!)
2.) Den Weg zum endgültigen SQL-Statement logisch aufbauen
3.) Den Befehl: dateiname = filename.replace("'","_") umstellen, diesen musste ich einbauen, weil es Dateien mit "unmöglichen" Namen (') gibt. Das muss ich noch abfangen.
4.) Verwendung einer Funktion für die Erstellung des SQL-Statements.
5.) Was passiert, wenn eine Dateiendung mehr als 3 Buchstaben hat? Das muss ich noch abfangen.