J'ai un script python qui me fait mal sur Ubuntu 12.02 avec Python 2.7.3. PS: il fonctionne sans problème sous Windows.erreur shutil samefile sous Linux
>>> import os
>>> import shutil
>>> shutil.copy("/mnt/my_network_dive/somewhere/sample.xml", "/mnt/my_network_drive/COMPLETED/")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/shutil.py", line 117, in copy
copyfile(src, dst)
File "/usr/lib/python2.7/shutil.py", line 69, in copyfile
raise Error("`%s` and `%s` are the same file" % (src, dst))
shutil.Error: `/mnt/my_network_dive/somewhere/sample.xml` and `/mnt/my_network_drive/COMPLETED/sample.xml` are the same file
Vérification des propriétés des fichiers:
>>> os.path.exists("/mnt/my_network_drive/somewhere/sample.xml")
True
>>> os.path.exists("/mnt/my_network_drive/COMPLETED/sample.xml")
True
>>> os.stat("/mnt/my_network_drive/somewhere/sample.xml")
posix.stat_result(st_mode=33272, st_ino=4913809333, st_dev=25L, st_nlink=1, st_uid=1000, st_gid=0, st_size=5447, st_atime=1465311674, st_mtime=1465311674, st_ctime=1465311685)
>>> os.stat("/mnt/my_network_drive/COMPLETED/sample.xml")
posix.stat_result(st_mode=33272, st_ino=4913809333, st_dev=25L, st_nlink=1, st_uid=1000, st_gid=0, st_size=10, st_atime=1465317482, st_mtime=1465317482, st_ctime=1465317483)
>>> os.path.islink("/mnt/my_network_drive/somewhere/sample.xml")
False
>>> os.path.islink("/mnt/my_network_drive/COMPLETED/sample.xml")
False
>>> shutil._samefile("/mnt/my_network_dive/somewhere/sample.xml", "/mnt/my_network_drive/COMPLETED/sample.xml")
False
Comme vous le voyez, je reçois l'appel shutil._samefile
False
mais shutil.copy
heurteront à la même samefile error
.
Est-ce que j'oublie quelque chose? Un autre moyen de déplacer ou de copier des fichiers avec Python?
Vous n'avez pas besoin de les copier. Ce sont deux entrées de répertoire différentes pointant sur le même fichier. Étant le même fichier, il n'y a aucune possibilité que leur contenu peut différer. –
(Pourquoi 'shutil._samefile' renvoie False est une question différente, et peut-être quelque chose pour déposer un bogue, mais puisque st_dev' et' st_ino' sont identiques, il ne fait aucun doute qu'il s'agit du même contenu pointé par les deux entrées du répertoire). –
@vmenezes Le premier argument de la copie dans la première case contient des instructions de plongée, est-ce seulement typo? –