回复: python32 to write file

Terry Reedy tjreedy at udel.edu
Sun Oct 23 15:52:28 EDT 2011


On 10/23/2011 9:59 AM, 水静流深 wrote:
> i change my code into :

Calling your file xml.py (as indicated below) is a potentially bad idea 
since the Python stdlib has a package named 'xml'. If you write 'import 
xml.xxx' in another file in the same directory, Python will try to find 
'xxx' in your xml.py file.

> import urllib.request, urllib.parse, urllib.error
> import lxml.html

Are you sure you have a version of lxml that works with Python 3?

> down='http://frux.wikispaces.com/'
> root=urllib.request.urlopen(down).read()

What type of object is returned and bound to root? (print(type(root)) if 
doc not clear.)

> root=lxml.html.fromstring(root)

What type of object is root required to be (from lxml docs)?
[snip]

> the new problem is :
>
> C:\Python32>python c:\xml.py
> Traceback (most recent call last):
> File "c:\xml.py", line 5, in <module>
> root=lxml.html.fromstring(root)
> File "C:\Python32\lib\site-packages\lxml\html\__init__.py", line 630, in
> fromstring
> if start.startswith('<html') or start.startswith('<!doctype'):
> TypeError: startswith first arg must be bytes or a tuple of bytes, not str

This implies that the name 'start' is bound to bytes when it should be 
(for 3.2) bound to unicode, which would most likely mean that 'root' is 
the wrong type. Or that the above is the 2.x version of lxml where 
'<html' is bytes rather than unicode.

-- 
Terry Jan Reedy





More information about the Python-list mailing list