使用Python上传文件到SharePoint时出错
我正在尝试用Python脚本把文件从我的电脑上传到SharePoint,但遇到了一个错误:“xml.sax._exceptions.SAXparseException no element found”。请给我一些建议,因为我对Python还很陌生,之前的尝试都没有成功。我的脚本如下:
#!/usr/bin/python2.4
import datetime as dt
import sys
from suds.transport.https import WindowsHttpAuthenticated
from suds.sax.element import Element
from suds.sax.element import Attribute
from suds import client
from ntlm import HTTPNtlmAuthHandler
import urllib2
import os.path
FOLDER = dt.date.today().strftime("%Y-%m-%d") #folder name that will be created
FNAME = "Testfile" #file name to upload
SITE = "My sharepoint path"
FURL = "%s/Reports/%s/%s" % (SITE,FOLDER,os.path.basename(FNAME))
USER = "Domain\\UserID" # AD user name
PASS = "Password"
def main():
wss_lists = client.Client("%s/_vti_bin/lists.asmx?WSDL" % SITE,transport=WindowsHttpAuthenticated(username=USER,password=PASS))
wss_dws = client.Client("%s/_vti_bin/dws.asmx?WSDL" % SITE,transport=WindowsHttpAuthenticated(username=USER,password=PASS))
wss_dws.service.CreateFolder("Reports/%s" % FOLDER)
print uploadReport(FURL,FNAME)
def uploadReport(furl,fname):
pm = urllib2.HTTPPasswordMgrWithDefaultRealm()
pm.add_password(None,SITE,USER,PASS)
op = urllib2.build_opener(HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(pm))
import pdb;pdb.set_trace()
fh = open(fname)
data = fh.read()
fh.close()
req = urllib2.Request(furl,data=data)
req.get_method = lambda: 'PUT'
req.add_header('Content-Type','txt')
r = op.open(req)enter code here
return r.read()
if __name__=="__main__": main()
2 个回答
0
我找到了一种解决办法……我正在创建一个“映射驱动器”……一旦映射驱动器创建完成,接下来就只需要复制和粘贴。如果你把文件复制到映射驱动器上,它会自动在SharePoint上更新。
你可以手动创建映射驱动器。另外,如果想通过脚本来创建映射驱动器,可以参考以下链接:
0
代码看起来是说它只上传从磁盘读取的文件,所以你尝试上传的XML文件可能格式不正确。建议你先检查一下这个。
另一个问题是,2.4版本真的很旧。如果可以的话,安装2.7版本,这样可以避免一些老问题给你带来麻烦。
然后你还可以做一些很不错的事情,比如:
with open('Testfile') as fileobj:
content = fileobj.read()
而且在执行完with
代码块后,文件对象会自动关闭。