Bonjour,
En python 2.7, y a t'il un moyen pour copier un fichier, autre que os.system ("cp fic1 fic2") ou bien le lire et l'écrire.
Merci
Bonjour,
En python 2.7, y a t'il un moyen pour copier un fichier, autre que os.system ("cp fic1 fic2") ou bien le lire et l'écrire.
Merci
Bonjour,
Je pense que le module shutil doit répondre à votre besoin (je ne l'ai pas utilisé).
Si vous ne travaillez que sous Linux, la solution que vous proposez par l'appel à os.system() est simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 import shutil shutil.copyfile(src, dst) shutil.copy(src, dst)
Vous pouvez le généraliser pour d'autres plateformes :
À défaut, la recopie par open,read,write,close est possible. Certes un peu longue mais tout aussi correcte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import sys if sys.platform[0:3] == "win" : os.system("copy fic1 fic2") elif sys.platform[0:5] == "linux" : os.system("\\cp fic1 fic2") else : print("ERREUR : Systeme d'exploitation non implante\n--> Windows(R) ou Linux") sys.exit()
Cordialement
@OliSharkPython
Je ne comprend pas le slicing pour ce genre de chose
Attention à os.system qui renvoie rien, sauf une valeur (0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> OS = sys.platform >>> OS 'linux2' >>> 'linux' in OS True >>> 'windows' in OS False
À la rigueur, mieux vaut utiliser subprocess
Maintenant il est souhaité d'utiliser la lib standard, surtout quand elle est portable, il serait dommage de ne pas en profiter, shutil sera en effet un meilleur choix.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je ne vois vraiment pas l’avantage d’utiliser cmd() ici, shutil.copy (ou shutil.copy2) est parfait pour copier des fichiers*!
@fred1599
Bonsoir,
Tout à fait d'accord pour le slicing. C'est un vieux bout de code avec des habitudes liées à d'autres langages pour la comparaison des chaînes (Fortran pour ne pas le citer). L'important n'est-il pas que cela fonctionne quand même ?
Sinon une petite recherche dans la documentation montre que l'on trouve facilement le module shutil et ses nombreuses possibilités dont copy/copy2/copyfile que je préconise aussi d'utiliser (c'était mon premier choix d'ailleurs) pour la portabilité du code !
Ce qui est intéressant dans cette simple question c'est le nombre de possibilités offertes simplement par Python pour y répondre en raison de sa souplesse. Mais aussi que la documentation de Python est bien fournie pour peu que l'on prenne le temps de s'y référer !
Cordialement.
Bonsoir,
shutil.py
Cela limite les réponses non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def copyfile(src, dst): """Copy data from src to dst""" ... with open(src, 'rb') as fsrc: with open(dst, 'wb') as fdst: copyfileobj(fsrc, fdst)
Mais... Comment copier un fichier sans le lire et l'écrire awalter1 ?
Comment faire autrement pour 'copier' un fichier ?
@+
Merci d'utiliser le forum pour les questions techniques.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager