我在Mac OS X 10.6.8上的Python 2.7.3中运行以下代码.
import StringIO
from lxml import etree
f = open('./foo', 'r')
doc = ""
while 1:
line = f.readline()
doc += line
if line == "":
break
tree = etree.parse(StringIO.StringIO(doc), etree.HTMLParser())
r = tree.xpath('//foo')
for i in r:
for j in i.iter():
print j.tag, j.text
Run Code Online (Sandbox Code Playgroud)
文件foo包含
<foo> AAA <bar> BBB </bar> XXX </foo>
Run Code Online (Sandbox Code Playgroud)
输出是
foo AAA
bar BBB
Run Code Online (Sandbox Code Playgroud)
为什么我没有收到文字XXX?我该如何访问它?
谢谢
如果我想使用两个文件我可以写:
with open(fname1, 'r') as f1, open(fname2, 'r') as f2:
# do stuff with f1 and f2
Run Code Online (Sandbox Code Playgroud)
但是,如果我有一个路径列表(例如,来自glob.glob)怎么办?我可以在列表理解中做类似的事情吗?我想到的是:
with [open(path, 'r') for path in paths_list] as flist:
# do stuff with this list of open file objects
Run Code Online (Sandbox Code Playgroud)
如上所述,这不起作用.
是否有一个python包可以处理perl中WWW :: Mechanize所涵盖的相同任务?