0

我创建了一个 Python 脚本来帮助管理我在 unRAID 服务器上的媒体。新文件会自动传输到文件夹中,脚本使用文件夹结构和文件名来确定它们应该移动到哪里,通常是移动到同一驱动器上的另一个共享中。使用午夜指挥官,这种转移会立即发生。Explorer 中的这个过程或我的脚本使用 shutil.move() 复制文件然后删除原始文件,这对于大文件可能需要很长时间,并且还会在驱动器上创建不必要的读/写。当传输在同一个共享上时,它在 Explorer 和 Python 中都是即时的。

简化伪代码 - 在此示例中,Transfer 和 TV 是同一磁盘上的共享:

from shutil import move

oldPath = r'\\NAS\Transfer\incoming\test.mkv'
newPath = r'\\NAS\TV\test.mkv'

move(oldPath, newPath)

有没有办法用 Python 移动文件的指针,就像我假设 MC 正在做的那样,而不是物理移动文件?

4

1 回答 1

1

为文件赋予新名称同时将其保留在同一文件系统上的底层接口是os.rename(). 如果该调用失败,则无法进行就地重命名。

如果您测试了可以直接在文件服务器上进行有效的本地重命名,但不能通过网络共享,您可能忽略了网络文件系统的限制(或者它的配置方式;确保源和目标都在同一个挂载下从客户端的角度来看,而不仅仅是服务器的)。

于 2021-03-07T04:02:33.660 回答