J'ai deux dossiers: In, Out - ce n'est pas le dossier système sur le disque D: - Windows 7. Out contient "myfile.txt" J'exécute la commande suivante en python:
>>> shutil.copyfile( r"d:\Out\myfile.txt", r"D:\In" )
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
shutil.copyfile( r"d:\Out\myfile.txt", r"D:\In" )
File "C:\Python27\lib\shutil.py", line 82, in copyfile
with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: 'D:\\In'
Quel est le problème?
Lisez les docs :
shutil.copyfile(src, dst)
Copiez le contenu (pas de métadonnées) du fichier nommé src dans un fichier nommé dst. dst doit être le nom complet du fichier cible ; regardez
copy()
pour une copie qui accepte un chemin de répertoire cible.
utilisez shutil.copy au lieu de shutil.copyfile
exemple:
shutil.copy(PathOf_SourceFileName.extension,TargetFolderPath)
Utilisez shutil.copy2 au lieu de shutil.copyfile
import shutil
shutil.copy2('/src/dir/file.ext','/dst/dir/newname.ext') # file copy to another file
shutil.copy2('/src/file.ext', '/dst/dir') # file copy to diff directory
J'ai résolu ce problème, vous devriez être le nom de fichier cible complet pour la destination
destination = répertoire_chemin + nom de fichier. *
J'utilise ce fichier wav de copie de code sap avec shutil:
# open file with QFileDialog
browse_file = QFileDialog.getOpenFileName(None, 'Open file', 'c:', "wav files (*.wav)")
# get file name
base = os.path.basename(browse_file[0])
os.path.splitext(base)
print(os.path.splitext(base)[1])
# make destination path with file name
destination= "test/" + os.path.splitext(base)[0] + os.path.splitext(base)[1]
shutil.copyfile(browse_file[0], destination)
utilisation
> from shutil import copyfile
>
> copyfile(src, dst)
pour une utilisation src et dst:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)