0
votes

Supprimer des fichiers de répertoire basé sur la version du nom de fichier

Je souhaite supprimer de vieux fichiers Zip d'un répertoire basé sur le nom de fichier lorsque la date créée ne peut pas être prise en compte

E.g. xxx

résultat final: xxx

Je suis Toudre pour lire les 23 premiers caractères et s'il correspond à la seconde, puis comparez le fichier1 à FILE2. Si la valeur est fausse, alors appendez-la à la liste et à la supprimer éventuellement. xxx

perdu de conserver la valeur du premier fichier et de continuer à vérifier.


0 commentaires

3 Réponses :


1
votes

Ce qui suit devrait vous donner le résultat final souhaité.

import os

source = r"C:\Users\Pyhton"    
file_names = os.listdir(source)

latest_files = {}
for file_name in file_names:
    name_parts = file_name.split("_")
    date_stamp = name_parts[1]

    if date_stamp not in latest_files or file_name > latest_files[date_stamp]:
        latest_files[date_stamp] = file_name


keep_files = latest_files.values()
for file_name in file_names:
    if file_name in keep_files:
        continue

    os.remove(os.path.join(source, file_name))


3 commentaires

Bonjour Dusan, merci beaucoup pour vous aider. Malheureusement, il s'agit de NPO travailler et peut-être que nous avons manqué d'ajouter Date_Stamp. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------- APPEL DE LA LIERHON-INPUT-71-E3A4DE830318> IN 8 nom_parts = nom_name.split ("_") 9 ---> 10 date_stamp, version = nom_parts [1:] 11 12 Si date_stamp n'est pas dans dattard_files ou version> Dernier_files [date_stamp]: ValueError: Trop de valeurs pour déballer (attendu 2)


Tout près. J'ai fait petite erreur dans le nom du fichier lors du téléchargement de cette, les fichiers source ====================== PyhtonReport_20180404_567_03.zip PyhtonReport_20180404_567_02.zip PyhtonReport_20180404_567_01.zip PyhtonReport_20181221_145_02.zip PyhtonReport_20181221_145_01.zip Pyhtonrepor_20180816_345_01.zip End Résultat ============================== PYHTONREPORTE_20180404_567_03.ZIP PYHTONREPORTE_20181221_145_02.ZIP PYHTONREPORTE_20180816_345_01.ZIP Nous devons prendre en compte les 1er et 2e entrées après la scission. Est-ce que c'est faisable?


Fait .. j'ai ajouté une autre chaîne date_stamp = name_parts [1] + nom_parts [2]



0
votes

Edit: Désolé, j'ai raté la partie de garder certaines d'entre elles!

import glob
import os
files = glob.glob('path/to/old/files/common_part_of_files_names*.zip')
groups = set([f[:21] for f in files])
for group in groups:
  versions = [f for f in files if f.starts_with(group)]
  versions.remove(max(versions)) # pop latest
  for v in versions:
    os.remove(v)


1 commentaires

Besoin d'ajouter des conditions. À ce moment, le code ci-dessus supprimer simplement tous les fichiers.



0
votes

Désolé, je ne pouvais pas te sentir. xxx

et son utilisation xxx


0 commentaires