Dateien verschieben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
hansen12345
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 19:56

Dateien verschieben?

Beitragvon hansen12345 » Montag 23. Januar 2006, 20:18

hallo,
frage:
ich habe einen ordner, in dem .txt dateien gespeichert sind.
python soll nur den ordner durchsuchen und wenn es .txt dateien finden dann sollen diese in einen neuen ordner mit dem namen "dokumete txt" verschoben werden, den python auch erstellt hat.

bin erst seit ca. einer woche im club python,
also bitte eine antwort das sie auch ein newbie versteht.

danke
flo
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Montag 23. Januar 2006, 20:41

http://docs.python.org/lib/module-shutil.html

Da gibts eine Funktion move. Das suchst du :wink:
TUFKAB – the user formerly known as blackbird
hansen12345
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 19:56

Beitragvon hansen12345 » Dienstag 24. Januar 2006, 00:26

danke für die antwort,

"aber das ist nur die halbe miete":
ich will ja das NUR dateien in deren name .txt vorkommt verschieben.

z.b.:
ein ordner mit verschiedenen dateien(jpg, mp3, txt usw.).
python soll nun den ordner mit den verschiedenen dateien durchsuchen und NUR die dateien wo .txt im Dateinamen vorkommt in einen neuen ordner verschieben.

bitte um rat
gruß
flo
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Dienstag 24. Januar 2006, 00:29

Guck Dir os.listdir() in Kombination mit fnmatch.fnmatch() an. Wie ich auch schon im IRC sagte. ;-)

Alles auf der Python-Homepage dokumentiert, und beide Teil der stdlib.

--- Heiko.
hansen12345
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 19:56

Beitragvon hansen12345 » Dienstag 24. Januar 2006, 01:44

komme nicht weiter bin echt am verzweifeln,
bin anfänger und deswegen verstehe ich das mit den zwei "module kombinieren" noch nicht ,
aber ich habs mal versucht siehe beispiel :-(

wie schaffe ich es jetzt die datei wo .txt im namen vorkommt zu verschieben?


Code: Alles auswählen

from fnmatch import*
from os import*
from findertools import*
a=listdir("D:\\1")  #listet den ordner mit den verschidenen dateien.
b=fnmatch("%s" % (a), "*.txt*")  #wenn in "a" .txt vorkommt kommt True
if b==True:
    move(?????, ordner2)


bitte um hilfe
flo
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Dienstag 24. Januar 2006, 05:06

Code: Alles auswählen

from fnmatch import fnmatch
import os
from findertools import*
filelist = listdir('/home/myfolder')
for fn in filelist:
    b = fnmatch(fn, '*.txt')  #wenn in "a" .txt vorkommt kommt True
    if b:
        move(fn, '/home/textfiles')
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 24. Januar 2006, 08:32

Hi!

Ich verwende zum Auflisten von Dateien eines Ordners auch gerne *glob*.
Das sieht dann so aus:

Code: Alles auswählen

from glob import glob
for filenames in glob("/home/gerold/*.txt"):
    print filenames

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
hansen12345
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 19:56

Beitragvon hansen12345 » Dienstag 24. Januar 2006, 18:36

vielen dank für eure antworten:

natürlich sind beide möglichkeiten gut,
aber der code von >gerold ist für mich leichter zu verstehen und auch kürzer.

aber nochmal danke für eure unterstützung
gruß
flo
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Dienstag 24. Januar 2006, 18:37

Wobei Du aber bedenken musst dass glob() nicht überall das macht was Du willst... Siehe hierzu die Beschreibung von glob in der Python-Dokumentation.

fnmatch macht immer das was Du willst.

--- Heiko.
hansen12345
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 19:56

Beitragvon hansen12345 » Dienstag 24. Januar 2006, 20:31

@modelnine
wie wurde dan fnmatch in meinem beispiel als code ausehen?

gruß
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 24. Januar 2006, 20:57

modelnine hat geschrieben:Wobei Du aber bedenken musst dass glob() nicht überall das macht was Du willst...

Hi Heiko!

Auf was spielst du an? Ich finde nichts negatives in der Doku. Man könnte evt. die Tatsache, dass auch kaputte Symlinks aufgelistet werden, als negativ bewerten. Aber wenn ich davon weiß, dann kann ich ja immer noch einen Fehler abfangen oder vorher prüfen ob die Datei auch wirklich existiert, bevor ich sie verschiebe.
http://python.org/doc/2.4.2/lib/module-glob.html

Ein mögliches Einsatzszenario für "glob": Mit "glob" ist es ziemlich einfach, Logfiles in Benutzerordnern aufzulisten um diese danach auswerten zu können.

Code: Alles auswählen

logfiles = glob.glob("/home/*/log/*.log")
if logfiles:
    for logfilename in logfiles:
        if os.path.isfile(logfilename):
            f = file(logfilename, "rU")
            for linenumber, line in enumerate(f):
                if line:
                    if line.upper().find("ERROR") > -1:
                        print "ERROR in file '%s' in line %s:" % (logfilename, linenumber + 1)
                        ...
else:
    print "no logfiles found"

Ja, in Linux würde ich das mit "find" und "grep" machen. ;-) Aber hier geht es ja um Python.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]