我在archlinux上使用python 3.8。我使用shutil.copytree将文件夹复制到U盘中。当我在复制后签入usb时,文件夹被正确复制,但我看到我的usb闪存盘上有一个滴答作响的led指示灯,它仍然在写入。如果我在滴答结束之前弹出我的usb闪存盘,然后重新连接它,我看到文件夹并没有完全复制。意味着我的操作系统(archlinux)认为复制已经完成,但事实并非如此。有什么想法吗?
def copytree(self,src, dst):
"""
This method copies an entire folder recusively from the src to dst path
"""
for item in os.listdir(src):
s = os.path.join(src, item)
d = os.path.join(dst, item)
if os.path.isdir(s):
shutil.copytree(s, d)
else:
shutil.copy2(s, d)
这个调用之后的代码会继续运行,即使它没有完成复制。
发布于 2021-06-15 13:30:05
复制似乎在逻辑上已完成,但尚未完全写入物理USB闪存驱动器。也就是说,您的操作系统已经缓存了副本中的一些数据,并将在以后将其写入驱动器,但一定要在卸载驱动器之前。
要检查是否是这种情况,您可以检查(在Python中或通过其他程序)在代码移过shutil.copytree
之后是否已完成复制。如果是这样,那么几乎可以肯定的是,USB闪存驱动器没有安全地弹出。
您应该能够通过在移除USB闪存驱动器之前卸载(即安全弹出)USB闪存驱动器来解决此问题。
https://stackoverflow.com/questions/67987178
复制相似问题