我正在编写一个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比较陌生。任何帮助将不胜感激。
答案 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
区块将自动关闭该文件。