0
votes

Déplacez un échantillon aléatoire de fichiers d'un dossier à un autre

J'ai plusieurs dossiers de fichiers et j'essaie de déplacer un échantillon de fichiers sélectionnés au hasard d'un dossier à un autre. Je travaille avec le code ci-dessous, mais ce n'est pas tout à fait en cours d'exécution.

import os, random, shutil

source='folder_path_1'
dest='dest_folder_path'
onlyfiles = [f for f in os.listdir(source) if os.path.isfile(os.path.join(source, f))]
no_of_files = round((len(onlyfiles)/5))

print(no_of_files)

for i in range(no_of_files):
    random_file=random.choice(os.listdir(source))
    source_file="%s\%s"%(source,random_file)
    dest_file=dest
    shutil.move(source_file,dest_file)


1 commentaires

S'il vous plaît coller votre erreur ici.


3 Réponses :


0
votes
import os, random, shutil

source ='C:\\Users\\OlavA\\Desktop\\Start'
destination ='C:\\Users\\OlavA\\Desktop\\Destination'

onlyfiles = [f for f in os.listdir(source) if os.path.isfile(os.path.join(source, f))]
no_of_files = round((len(onlyfiles)/5))

def main():
    for i in range(no_of_files):
        files = [filenames for (filenames) in os.listdir(source)]
        random_file = random.choice(files)
        shutil.move(f'{source}\\{random_file}', destination)


if __name__ == '__main__':
    main()
This works, not the best code at all but it works.
Just remember to change your start path and destination path with your own, and you need \\ instead of \ in the path since it's a escape character.

2 commentaires

Cela ne tient pas compte du nombre de fichiers que j'aimerais bouger


Oui, n'avait pas vu qu'il le voulait, changé, fonctionne maintenant.



0
votes

Je n'avais aucune idée de ce que Shuttil n'est que je me suis complètement débranché. J'ai plutôt utilisé la commande intégrée ouverte () code>. Voici mon code:

import os, random

delete = True

source='source'
dest='destination'
onlyfiles = [f for f in os.listdir(source) if os.path.isfile(os.path.join(source, f))]
no_of_files = round((len(onlyfiles)/5))

print(no_of_files)

for i in range(no_of_files):
    random_file=random.choice(os.listdir(source))
    source_file="%s/%s"%(source,random_file)
    dest_file=dest+'/'+random_file
    destination_for_file = open(dest_file,'wb+')
    source_for_file = open(source_file,'rb')
    destination_for_file.write(source_for_file.read())
    destination_for_file.close()
    #optional (to delete the source)
    if delete:
        os.remove(source_file)


0 commentaires

2
votes

Cela devrait ressembler à quelque chose comme ça. Nous pourrions utiliser aléatoire.sample () pour obtenir une quantité spécifique d'éléments uniques aléatoires de notre liste (ici fichiers ) xxx


0 commentaires