我有一个 python 脚本,它使用urllib2.urlopen
. 本质上,流程是:
查找带有
if-not-modified
标题的文件,如果已修改,对其进行处理并将其副本写入文件系统如果没有,请获取我们存储在先前请求中的文件的本地副本并对其进行处理
- 如果没有本地副本并且它没有被修改,那么它是脚本第一次运行,所以我们需要发出相同的请求而没有
if-not-modified
标头并将该副本也存储在本地
最后一部分的代码没有按预期工作。请参阅下面处理第三种情况的代码:
except IOError, e:
#This is the first attempt to download the file.
pathWithNoHeader = ROOT_PATH + uri
requestWithNoHeader = urllib2.Request(pathWithNoHeader)
sourcefileWithNoHeader = urllib2.urlopen(requestWithNoHeader)
document = ET.parse(sourcefileWithNoHeader)
dir = os.path.dirname(__file__)
statefile = open(os.path.join(dir, STATE_FILES) + uri, 'w+')
statefile.write(sourcefileWithNoHeader.read())
statefile.close()
这成功地获取了文件(我知道,因为我正在尝试处理信息的其他事情正在成功)但是将文件写入文件系统失败并且没有错误。本质上,文件已创建,但它是空的。我是 Python 新手(几个月),对此我完全感到困惑。statefile.write(sourcefileWithNoHeader.read())
似乎是罪魁祸首,但同样的代码在其他地方也能正常工作。任何帮助,将不胜感激