在Python中键入错误写入文件

时间:2013-03-31 18:52:00

标签: python python-2.7 urllib

我正在编写一个Python脚本,以便在对网页进行更改时通知我,并将页面的当前状态存储到文件中,以便在重新启动后无缝地恢复。 代码如下:

import urllib
url="http://example.com"
filepath="/path/to/file.txt"
try:
    html=open(filepath,"r").read() # Restores imported code from previous session
except:
    html="" # Blanks variable on first run of the script
while True:
    imported=urllib.urlopen(url)
    if imported!=html:
    # Alert me
    html=imported
    open(filepath,"w").write(html)
# Time delay before next iteration

运行脚本返回:

Traceback (most recent call last):
  File "April_Fools.py", line 20, in <module>
    open(filepath,"w").write(html)
TypeError: expected a character buffer object

------------------
(program exited with code: 1)
Press return to continue

我不知道这意味着什么。我对Python比较陌生。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

urllib.urlopen不返回字符串,它将响应作为类文件对象返回。您需要读取该响应:

html = imported.read()

只有然后html一个可以写入文件的字符串。

答案 1 :(得分:1)

另外,使用open(filename).read()not considered good style,因为您永远不会关闭该文件。写作也是如此。请尝试使用context manager代替:

try:
    with open(filepath,"r") as htmlfile:
        html = htmlfile.read()
except:
    html=""

当您离开该区块时,with区块将自动关闭该文件。