Question Comment copier un fichier en python?


Comment copier un fichier en Python? Je n'ai rien trouvé sous os.


1457
2017-09-23 19:23


origine


Réponses:


shutil a beaucoup de méthodes que vous pouvez utiliser. L'un d'entre eux est:

from shutil import copyfile

copyfile(src, dst)

Copiez le contenu du fichier nommé src à un fichier nommé dst. L'emplacement de destination doit être accessible en écriture. sinon, un IOError exception sera soulevée. Si dst existe déjà, il sera remplacé. Les fichiers spéciaux tels que les périphériques de caractères ou de blocs et les tuyaux ne peuvent pas être copiés avec cette fonction. src et dst sont les noms de chemins donnés en tant que chaînes.


1770
2017-09-23 19:25



-----------------------------------------------------------------------------------
| Function          |Copies Metadata|Copies Permissions|Can Use Buffer|Dest Dir OK
-----------------------------------------------------------------------------------
| shutil.copy       |      No       |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfile   |      No       |        No        |      No      |    No
-----------------------------------------------------------------------------------
| shutil.copy2      |      Yes      |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfileobj|      No       |        No        |      Yes     |    No
-----------------------------------------------------------------------------------

549
2018-05-20 20:01



copy2(src,dst) est souvent plus utile que copyfile(src,dst) car:

  • il permet dst être un annuaire (au lieu du nom de fichier cible complet), auquel cas le basename de src est utilisé pour créer le nouveau fichier;
  • il préserve les informations de modification et d'accès d'origine (mtime et atime) dans les métadonnées du fichier (cependant, cela entraîne une légère surcharge).

Voici un petit exemple:

import shutil
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # complete target filename given
shutil.copy2('/src/file.ext', '/dst/dir') # target filename is /dst/dir/file.ext

547
2017-09-23 19:29



La copie d'un fichier est une opération relativement simple, comme le montrent les exemples ci-dessous, mais vous devriez plutôt utiliser module shutil stdlib pour ça.

def copyfileobj_example(source, dest, buffer_size=1024*1024):
    """      
    Copy a file from source to dest. source and dest
    must be file-like objects, i.e. any object with a read or
    write method, like for example StringIO.
    """
    while True:
        copy_buffer = source.read(buffer_size)
        if not copy_buffer:
            break
        dest.write(copy_buffer)

Si vous voulez copier par nom de fichier, vous pouvez faire quelque chose comme ceci:

def copyfile_example(source, dest):
    # Beware, this example does not handle any edge cases!
    with open(source, 'rb') as src, open(dest, 'wb') as dst:
        copyfileobj_example(src, dst)

73
2017-09-24 07:21



Utilisez le module shutil.

copyfile(src, dst)

Copiez le contenu du fichier nommé src dans un fichier nommé dst. L'emplacement de destination doit être accessible en écriture. sinon, une exception IOError sera déclenchée. Si dst existe déjà, il sera remplacé. Les fichiers spéciaux tels que les périphériques de caractères ou de blocs et les tuyaux ne peuvent pas être copiés avec cette fonction. src et dst sont des noms de chemins donnés sous forme de chaînes.

Jeter un coup d'œil à filesys pour toutes les fonctions de gestion de fichiers et de répertoires disponibles dans les modules Python standard.


47
2017-09-23 19:27



Vous pouvez utiliser l'une des fonctions de copie du shutil paquet:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Fonction conserve les supports accepte les copies autres
                      répertoire des permissions dest. fichier obj métadonnées
-------------------------------------------------- ----------------------------
shutil.copy                                            ☐ ☐
shutil.copy2                                           ☐
shutil.copyfile          ☐ ☐ ☐ ☐
shutil.copyfileobj       ☐ ☐ ☐
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Exemple:

import shutil
shutil.copy('/etc/hostname', '/var/tmp/testhostname')

40
2017-07-09 11:50



Exemple de répertoire et de copie de fichier - De Python Stuff de Tim Golden:

http://timgolden.me.uk/python/win32_how_do_i/copy-a-file.html

import os
import shutil
import tempfile

filename1 = tempfile.mktemp (".txt")
open (filename1, "w").close ()
filename2 = filename1 + ".copy"
print filename1, "=>", filename2

shutil.copy (filename1, filename2)

if os.path.isfile (filename2): print "Success"

dirname1 = tempfile.mktemp (".dir")
os.mkdir (dirname1)
dirname2 = dirname1 + ".copy"
print dirname1, "=>", dirname2

shutil.copytree (dirname1, dirname2)

if os.path.isdir (dirname2): print "Success"

36
2018-03-15 10:11



Regardez le module shutil. Il contient la fonction copier un fichier(src, dst)


21
2017-09-23 19:27



En Python, vous pouvez copier les fichiers en utilisant


import os
import shutil
import subprocess

1) Copie de fichiers en utilisant shutil module

shutil.copyfile  Signature

shutil.copyfile(src_file, dest_file, *, follow_symlinks=True)

# example    
shutil.copyfile('source.txt', 'destination.txt')

shutil.copy  Signature

shutil.copy(src_file, dest_file, *, follow_symlinks=True)

# example
shutil.copy('source.txt', 'destination.txt')

shutil.copy2  Signature

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)

# example
shutil.copy2('source.txt', 'destination.txt')  

shutil.copyfileobj  Signature

shutil.copyfileobj(src_file_object, dest_file_object[, length])

# example
file_src = 'source.txt'  
f_src = open(file_src, 'rb')

file_dest = 'destination.txt'  
f_dest = open(file_dest, 'wb')

shutil.copyfileobj(f_src, f_dest)  

2) Copier des fichiers en utilisant os module

os.popen  Signature

os.popen(cmd[, mode[, bufsize]])

# example
# In Unix/Linux
os.popen('cp source.txt destination.txt') 

# In Windows
os.popen('copy source.txt destination.txt')

os.system  Signature

os.system(command)


# In Linux/Unix
os.system('cp source.txt destination.txt')  

# In Windows
os.system('copy source.txt destination.txt')

3) Copier des fichiers en utilisant subprocess module

subprocess.call  Signature

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.call('cp source.txt destination.txt', shell=True) 

# In Windows
status = subprocess.call('copy source.txt destination.txt', shell=True)

subprocess.check_output  Signature

subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)

# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.check_output('cp source.txt destination.txt', shell=True)

# In Windows
status = subprocess.check_output('copy source.txt destination.txt', shell=True)


19
2018-01-22 03:05



Vous pourriez utiliser os.system('cp nameoffilegeneratedbyprogram /otherdirectory/')

ou comme je l'ai fait,

os.system('cp '+ rawfile + ' rawdata.dat')

rawfile est le nom que j'avais généré dans le programme.

Ceci est une solution Linux uniquement


13
2017-12-19 23:18