【发布时间】:2017-11-16 19:23:35
【问题描述】:
我正在开发一个 python 2.7 应用程序,该应用程序旨在将文件上传到 2007 Sharepoint。服务器在 OpenSUSE 机器上运行。我现在这样做的方式是使用 subprocess' Popen 来执行 curl 命令。但是,当文件名包含特殊字符(例如,'á'、'õ'、'ç')时,python 会引发 UnicodeEncodeError。
我可以通过强制转换来解决 Unicode 错误
对于命令字符串,从 str 到 Unicode,但随后文件以错误的格式名称转到 Sharepoint(例如,Manutenção 变为 Manuten'c~ao)。下图描述了我正在使用的函数的实现:functions used
有人知道我应该如何进行吗?
P.S.:我更愿意继续使用 curl 命令来执行请求,但我们对其他解决方案持开放态度
编辑: 没有尝试 pycurl,但我会看看它。运行服务器的 Linux dist 是 3.11.10。 执行流程如下:
- 从 utf-8 数据库中读取文件名和路径
- 在 Sharepoint 中选择文件的目标 url
- 构建类似于“curl --ntlm -u usr:pwd --upload-file filelocalPath fileSharepointUrl -k”的 curl 命令
- 使用 convert_to_utf_8 函数(查看附图)
- 使用 Popen 发出请求(如在 __execute_curl_cmd_and_wait 函数中)
【问题讨论】:
-
python 应用程序在哪里运行(*nix 或 Windows)?您是否尝试使用 pycurl ?尽量根据mvce提供更多信息
-
不,我没试过,我去看看。我刚刚编辑了我的帖子,希望对您有所帮助...
-
将
Manutenção转换为Manuten'c~ao听起来不像 curl 或 Python 会做的事情。您确定您的 Sharepoint 服务器没有破坏名称吗? curl 发送的确切标题是什么(通过curl -vv ...找到)?
标签: python subprocess popen