0

当我使用 Python 和 urlib2 从我的服务器下载文件时,文件内容与应有的内容略有不同。

它们的不同之处在于在下载的文件版本中添加了额外的行(“\r\n”或“\n”)。对于 xml 格式的文件,这不是主要问题,但当我的文件被加密时,这是一个主要问题,因为文件内容略有不同并且无法解密。

我知道是我的下载代码改变了文件内容,而不是服务器上的文件错误,因为我已经使用 FTP 下载了该文件,并且当我以这种方式下载它时发现它具有正确的内容。一些更有用的信息:文件是 ASCII 编码的。我的服务器是 Windows .NET,我不确定 http 响应是 ascii 还是 unicode - 也许这可能导致问题?

如何让 urlib2 从我的服务器下载我的文件并确保内容不会改变?

原创内容:

     <clientlist>


       <client>
         <clientauthblah>blah</clientauthblah>
         <version9>blah</version9>
         <version10>blah</version10>
         <companyno>1</companyno>
         <companyname>blah</companyname>
       </client>

当我运行我的下载代码时,这是我得到的内容,这是我无法拥有的,因为我的文件是加密的,这意味着我无法解密文件:

 <clientlist>




   <client>

     <clientauthblah>blah</clientauthblah>

     <version9>blah</version9>

     <version10>blah</version10>

     <companyno>1</companyno>

     <companyname>blah</companyname>

   </client>

这是我的代码:

# Download
response = urllib2.urlopen("http://www.mywebsite.com/Clients.xml")
output    = open("tempEncrypted.xml",'w')
res       = response.read()
output.write(res)
output.close()
4

1 回答 1

1

这里的问题是这一行:

output    = open("tempEncrypted.xml",'w')

Python 默认以文本模式打开文件,这意味着您可能会得到换行符转换。平台差异、通用换行符等使细节变得复杂。

但是如果你有二进制数据,答案很简单:以二进制模式打开它,使用'wb'而不是'w'

output    = open("tempEncrypted.xml",'wb')
于 2013-01-16T02:28:05.153 回答