CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python Win11 ça copie rien

Justlikeme094
Justlikeme094
Niveau 44
11 mai 2022 à 12:12:20

Bonjour

Depuis 3h je m'arrache les cheveux avec Windows 11 et Python, je m'explique j'ai un dossier "Toto" dans ce dossier j'ai plusieurs sous dossier qui contiennent différent fichier, document etc..

Ce que j'aimerai c'est copier l'entièreté du dossier "Toto" avec tout son contenu afin de pouvoir le coller ailleurs,

j'ai tenté les shutil copy,copy2,tree etc... ça copie rien

import shutil
import os

source_folder = r"C:\Users\VMTEST\Desktop\toto"
destination_folder = "C:\ICI"
def copytoto():
for file_name in os.listdir(source_folder):
source = source_folder + file_name
destination = destination_folder + file_name
if os.path.isfile(source):
shutil.copy(source,destination)
print('fichier copié', file_name)

Mais j'ai rien :snif: vous avez une idée :merci:

Azerban
Azerban
Niveau 16
11 mai 2022 à 12:26:34

Il faut que tu appelles ta fonction

def copytoto():
    ...

copytoto()
Message édité le 11 mai 2022 à 12:30:11 par Azerban
Justlikeme094
Justlikeme094
Niveau 44
11 mai 2022 à 12:30:51

Le 11 mai 2022 à 12:26:34 :
Il faut que tu appelles ta fonction

def copytoto():
     ...

copytoto()

Même quand je l'appel il ce passe rien, aucun message d'erreur ou autre juste rien mon script considère que c'est copié j'ai déjà eu le cas avec Win11 ou en faite il copie mais non et t'indique que la copie est faite et tu te retrouve avec un fichier vide

[Black_Spirit]
[Black_Spirit]
Niveau 19
11 mai 2022 à 12:37:18

À vu d'œil je dirais que t'oublies tu rajouter l'antislash qd tu concatène

Faudrait faire un truc du genre


import os

destination = os.path.join(source_directory, filename)

Pour éviter ce genre de problèmes.

Message édité le 11 mai 2022 à 12:38:15 par [Black_Spirit]
Azerban
Azerban
Niveau 16
11 mai 2022 à 12:53:31

Dans cet exemple, je copie mon dossier "toto" dans mon répertoire "Images" (un dossier toto sera créé dans ce répertoire et tout le contenu de toto sera copié dedans).

import os
import shutil


def copy_folder(folder_source: str, destination: str) -> None:
    folder_name = os.path.split(folder_source)[-1]
    abs_path_dest = os.path.abspath(destination)
    new_destination = os.path.join(abs_path_dest, folder_name)
    try:
        shutil.copytree(folder_name, new_destination)
        print(f"Folder `{folder_name}` copy at {new_destination}")
    except FileExistsError:
        print(f"Directory {new_destination} already exists. Copy abort.")


if __name__ == "__main__":
    copy_folder("toto", "/home/azerban/Images")
Azerban
Azerban
Niveau 16
11 mai 2022 à 13:06:59

Un script un peu plus robuste (tu peux l'exécuter de n'importe ou si tu mets les chemins absolus de tes dossiers) :

import os
import shutil


def copy_folder(folder_source: str, destination: str) -> None:
    if not os.path.exists(folder_source):
        print(f"`{folder_source}` does not exist.")
        return

    if not os.path.isdir(folder_source):
        print(f"`{folder_source}` must be a directory.")
        return

    folder_name = os.path.split(folder_source)[-1]
    abs_path_dest = os.path.abspath(destination)
    new_destination = os.path.join(abs_path_dest, folder_name)

    try:
        shutil.copytree(folder_source, new_destination)
        print(f"Folder `{folder_source}` copy at `{new_destination}`")
    except FileExistsError:
        print(f"Directory {new_destination} already exist. Copy abort.")

if __name__ == "__main__":
    copy_folder("/home/azerban/Bureau/toto", "/home/azerban/Bureau/backups")
Justlikeme094
Justlikeme094
Niveau 44
11 mai 2022 à 13:34:11

Bon voici une erreur

Traceback (most recent call last):
File "C:\Users\admini\PycharmProjects\pythonProject\main.py", line 3, in <module>
from mesfonctions import copy_folder
File "C:\Users\admini\PycharmProjects\pythonProject\mesfonctions.py", line 27
copy_folder("C:\Users\vmtest\Desktop\toto", "C:\ici")
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Je comprends pas l'erreur d'import module puisque j'ai 0 erreur dessus

Azerban
Azerban
Niveau 16
11 mai 2022 à 13:50:56

Sous windows il faut que tu convertisses la string en raw string (en ajoutant un r devant la chaîne) :

copy_folder(r"C:\Users\vmtest\Desktop\toto", r"C:\ici")

https://stackoverflow.com/questions/37400974/unicode-error-unicodeescape-codec-cant-decode-bytes-in-position-2-3-trunca#answers

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment