Je suis novice en programmation et je travaille sur une tâche de création de script en utilisant Python pour détecter les fichiers d'un dossier créé ou modifié au cours des dernières 24 heures, puis déplacez ces fichiers dans un répertoire différent.Déplacement de fichiers spécifiques de plage de temps en Python
J'ai écrit un code qui imprime la date de création et de modification des fichiers, dans une fonction qui trie également les anciens fichiers/modifiés il y a plus de 24 heures. Mais je me bats avec la création d'un script qui prend ces fichiers spécifiques et les transfère dans un nouveau dossier. Ceci est la première partie de mon code:
import os,time
import datetime
import shutil
now = dt.datetime.now()
ago = now-dt.timedelta(hours=24)
strftime = "%H:%M %m/%d/%Y"
created = 'C:\\Users\\Jacquelin\e\Desktop\\created'
dest = 'C:\\Users\\Jacqueline\\Desktop\\dest'
for root, dirs,files in os.walk(created):
for fname in files:
path = os.path.join(root, fname)
st = os.stat(path)
mtime = dt.datetime.fromtimestamp(st.st_mtime)
if mtime > ago:
print "True: ", fname, " at ", mtime.strftime("%H:%M %m/%d/%Y")
else:
print False
for fname in os.listdir(created):
if mtime > ago:
shutil.move(path, dest)
print "moved to dest", fname
J'utilise shutil.move pour transférer les fichiers, et ont essayé un million things-- mais ne peut pas comprendre! Je travaille également sur les transformer en fonctions pour simplifier les choses. Jusqu'à présent, voici ce que j'ai:
def find_info(): #this first func. works fine.
for root, dirs, files in os.walk(created):
for fname in files:
path = os.path.join(root, fname)
st = os.stat(path)
mtime = dt.datetime.fromtimestamp(st.st_mtime)
if mtime > ago:
print True
else:
print False
Pour la fonction « move », je me sens comme cela est la bonne idée mais, ne connaissant pas les variables à passer, je l'ai laissé les parenthèses vides. Et que renvoie une longue liste de booléens fous. Alors.
def move():
for fname in os.listdir(created):
path = os.path.join(root, fname)
if find_info(fname) == True:
shutil.move(path, dest)
print "moved to dest", fname
print find_info() #variable? is one even needed?
print move() #variable????
print os.listdir(dest)
print os.listdir(created)
Je ne sais pas quelle (s) variable (s) passer dans les fonctions. Ensuite, j'imprime les répertoires pour voir si les fichiers ont bien été transférés. Les choses damnées ne bougeront pas.
Merci!
Pourriez-vous expliquer comment vous utilisez 'shutil.move' et qu'est-ce qui ne va pas? Messages d'erreur, etc. Notez également que le chemin avec des barres obliques inverses peut être interprété incorrectement car le backslash a une signification spéciale (comme dans \ n), vous devez donc y échapper '" c: \\ Users \\ ... "' ou (mieux) '' os .path.join'. –
Je viens de changer mon code, et je le mettrai ci-dessus avec le message original; Avec shutil.move, ça ne bouge pas les fichiers! Je demande au programme d'imprimer les répertoires d'origine et de destination, mais aucun transfert n'a eu lieu. – nikkiy