Ich habe ein Python-Skript, das mir eine harte Zeit auf Ubuntu 12.02 mit Python 2.7.3.shuttil samefile Fehler unter Linux
PS: Es läuft ohne Probleme auf Windows.
>>> 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
Überprüfung einige Eigenschaften der Dateien:
>>> 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
Wie Sie sehen, shutil._samefile
Aufruf ich False
aber shutil.copy
noch die samefile error
erhöhen.
Vergesse ich etwas? Jede andere Möglichkeit, Dateien mit Python zu verschieben oder zu kopieren?
Sie müssen sie nicht kopieren. Sie sind zwei verschiedene Verzeichniseinträge, die auf dieselbe Datei verweisen. Da es sich um die gleiche Datei handelt, kann ihr Inhalt nicht abweichen. –
(Warum 'shuthil._samefile' False zurückgibt, ist eine andere Frage und vielleicht etwas, um einen Bug zu überschreiben, aber da' st_dev' und 'st_ino' identisch sind, steht außer Frage, dass es sich um den gleichen Inhalt handelt, auf den beide verweisen Verzeichniseinträge). –
@vmenezes Das erste Argument der Kopie in der ersten Box enthält den Tauchgang von Laufwerk, ist es nur Tippfehler? –