[Python-de] Newbie frage

Mirko T. brainerror at gmx.net
Mit Feb 16 16:31:12 CET 2005


> Empfangen eines Dateinamens ( inkl. Verzeichnis ) z.B. C:\Test
> \Document.txt
> Umbenennen der Datei in Document_mmhhss_ddmmyyyy.txt
> Kopieren der Originaldatei zu einen Verzeichnis z.B. D:\Test2
> Kopieren der Veraenderten Datei z.B. D:\Test3

Sind diese Verzeichnisse "fest" oder werden sie ebenfalls als Argumente
übergeben?
Im ersten Fall werden die Verzeichnisse irgendwo als Variablen im Skript
gespeichert, im zweiten Fall wäre es ziemlicher Unsinn, über sys.argv zu
iterieren. 

> for arg in sys.argv:

Iteration über alle übergebenen Argumente, d.h., wenn das Skript mit
./skript.py datei1 datei2 datei3
aufgerufen wird, enthält sys.argv (eine Liste) die Elemente
["skript.py", "datei1", "datei2", "datei3"].

>     shutil.move (arg[1],arg[2])

Quatsch. Was soll das machen? arg[1] und arg[2] sind Buchstaben eines
Strings... (arg ist ein String welcher - hoffentlich - einen Dateinamen
bezeichnet.)
Rest hat auch einiges an Fehlern.

So könnte eine Lösung aussehen... (hast Glück, dass gerade
Semesterferien sind und ich unbedingt die Java-Hirnwäsche aus der Uni
loswerden will ;) ):

====================
#!/usr/bin/python

import sys
import os
import time
import shutil
import os.path

ORIGINALSOURCEDIR="/test2"
CHANGEDSOURCEDIR="/test3"

if len(sys.argv)<=1:
    print "Bitte einen oder mehrere Dateinamen angeben!"
    sys.exit()

if not os.path.exists(ORIGINALSOURCEDIR):
    print "Das ORIGINALSOURCEDIR", ORIGINALSOURCEDIR, "existiert nicht!"
    sys.exit()
if not os.path.exists(CHANGEDSOURCEDIR):
    print "Das CHANGEDSOURCEDIR", CHANGEDSOURCEDIR, "existiert nicht!"
    sys.exit()

for arg in sys.argv[1:]:
    if os.path.isfile(arg):
        file=os.path.split(arg)[1] # filenamen extrahieren
        chfile,ext=os.path.splitext(file) # filenamen aufspalten
        # pfade erzeugen mit os.path.join (verzeichnis, dateiname)
        chfilepath=os.path.join(CHANGEDSOURCEDIR, chfile + "_" + \
                                time.strftime('%H%M%S_%d%m%Y') + ext)
        orfilepath=os.path.join(ORIGINALSOURCEDIR, file)
        # kopieren / verschieben
        shutil.copy(arg, chfilepath) 
        shutil.move(arg, orfilepath)
    else:
        print arg, "ist keine Datei!"
====================

Ciao,

Mirko