首页 > 解决方案 > SMB 网络共享上的 Python 文件复制

问题描述

我有一个关于使用 Python 通过网络复制文件的问题。我最近为我的部门创建了一个脚本,以便能够拖放文件并将它们从源位置(在网络驱动器上)复制并重命名到用户指定的位置(也主要在网络驱动器上,但有时在用户的桌面上)。我遇到的问题是随机脚本最初不会输出用户想要的所有文件。如果要制作 5 份,有时实际上只能输出 3 或 4 份。如果使用相同的选项再次删除相同的文件,则通常输出其余文件没有问题。

这让我很困惑,因为它的不一致。如果它每次都发生或者在重新删除后没有自行修复,我会将其归结为我的脚本中的逻辑错误,但这似乎不适用于这里,因为它只是一个简单的复制命令。我已经尝试了以下 3 个复制命令(分别),它们都随机产生了这个结果。

os.system('echo f | xcopy /f /y "{source}" "{target}"'.format(source=source, target=target))
shutil.copyfile(source, target)
shutil.copy2(source, target)

我只是认为这只是我们网络的一个问题,比如脚本发送复制命令的速度可能比网络处理它们的速度快,但我对网络的了解还不够,不知道这是否可能。那么这个问题可能只是我们的网络设置的问题,还是有更好的方法可以使用 Python 通过网络一次复制多个文件以确保一致性?作为记录,我们的网络是一个 SMB 网络共享,文件通常从一个 mapdrive 复制到另一个(或用户的桌面)。

这让我发疯,因为用户一直在抱怨它。任何可以提供的建议都会非常有帮助。提前致谢。

标签: pythonnetworkingserversmbfile-copying

解决方案


推荐阅读