【问题标题】:Store file to local server with pysmb使用 pysmb 将文件存储到本地服务器
【发布时间】:2019-01-28 00:43:53
【问题描述】:

我正在编写一个脚本来将文件夹与本地 Synology nas 上的共享文件夹同步。我能够连接、读取文件并删除没有问题,但卡在副本(存储文件)。

pysmb 的文档是这样的

storeFile(service_name, path, file_obj, timeout=30)
  Store the contents of the file_obj at path on the service_name. If 
  the file already exists on the remote server, it will be truncated 
  and overwritten.

Parameters: 
  service_name (string/unicode) – the name of the shared folder for the 
 path
 path (string/unicode) – Path of the file on the remote server. If the 
 file at path does not exist, it will be created. Otherwise, it will 
 be overwritten. If the path refers to a folder or the file cannot be 
 opened for writing, an OperationFailure will be raised.
 file_obj – A file-like object that has a read method. Data will read 
 continuously from file_obj until EOF.

 Returns:   
 Number of bytes uploaded

我似乎无法传递正确类型的文件 obj。我收到的主要错误是这个

smb.smb_structs.OperationFailure: Failed to store  on andrews-itunes: Unable to open file

这是我的尝试

    with open(start_path + f, 'rb', buffering=0) as file_obj:
        conn.storeFile(server_path, '/', file_obj)
    file_obj.closed

我也尝试过使用 io.BYTESIO。我的结论是我必须传递一个字节对象而不打开它,因为它试图这样做,但是我怎么能从驱动器中获取那个字节文件呢?有什么想法吗?

【问题讨论】:

  • 您的路径参数'/' 不包含/不包含有效文件名,因此无法创建文件。
  • 就是这样!万分感谢。从描述中我认为这只是文件的路径,不包括名称。如果你想写一个完整的答案,我会接受并投票。

标签: python pysmb


【解决方案1】:

storeFilepath 参数必须包含应创建/覆盖的文件的路径和名称。为了使函数尽可能灵活,名称不是取自file_obj(类文件对象甚至可能没有名称)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多