Dropbox Python API:文件大小检测可能已失败

Owe*_*ell 2 python api dropbox

我正在尝试使用以下代码将文本文件上传到Dropbox:

def uploadFile(file):
    f = open('logs/%s.txt' % file)
    response = client.put_file('/%s.txt' % file, f)
    print "Uploaded log file %s" % file
Run Code Online (Sandbox Code Playgroud)

连接到Dropbox工作得非常好,就在我上传文件时我收到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\dropbox_python_sdk-1.5.1-py2.7.egg\dropbox
\client.py", line 352, in put_file
    return self.rest_client.PUT(url, file_obj, headers)
  File "C:\Python27\lib\site-packages\dropbox_python_sdk-1.5.1-py2.7.egg\dropbox
\rest.py", line 265, in PUT
    return cls.IMPL.PUT(*n, **kw)
  File "C:\Python27\lib\site-packages\dropbox_python_sdk-1.5.1-py2.7.egg\dropbox
\rest.py", line 211, in PUT
    return self.request("PUT", url, body=body, headers=headers, raw_response=raw
_response)
  File "C:\Python27\lib\site-packages\dropbox_python_sdk-1.5.1-py2.7.egg\dropbox
\rest.py", line 174, in request
    raise util.AnalyzeFileObjBug(clen, bytes_read)
dropbox.util.AnalyzeFileObjBug:
Expected file object to have 18 bytes, instead we read 17 bytes.
File size detection may have failed (see dropbox.util.AnalyzeFileObj)
Run Code Online (Sandbox Code Playgroud)

谷歌没有给我任何帮助.

Thi*_*ter 8

听起来你是新线统一的受害者.文件对象报告文件大小为18个字节("abcdefghijklmnop\r\n")但您只读取17个字节("abcdefghijklmnop\n").

以二进制模式打开文件以避免这种情况:

f = open('logs/%s.txt' % file, 'rb')
Run Code Online (Sandbox Code Playgroud)

默认设置是使用文本模式,该模式可以'\n'在写入时将字符转换为特定于平台的表示形式,然后在读取时将其转换