3

只是想知道是否有人可以很好地告诉我我做错了什么。处理一些代码,与我的cherrypy项目一起使用

import glob
import os

def get_html(apath):
    print (apath)
    fhtml = open(apath,'r')
    data = fhtml.read()

    return data


article_path  = os.getcwd() +'/articles/*.html'
myArticles = [glob.glob(article_path)]

print len(myArticles)

for items in myArticles:
    get_html(items)

结果是:

['/home/sd/Documents/projects/cherryweb/articles/Module 5-Exploitation Techniques And Exercise.pdf.html']
Traceback (most recent call last):
  File "fntest.py", line 22, in <module>
    get_html(items)
  File "fntest.py", line 10, in get_html
    fhtml = open(apath,'r')
TypeError: coercing to Unicode: need string or buffer, list found

我假设它是因为我传递的文件名具有字符串列表中的 [' 和 '],我可以编写一个函数来修剪这些部分,但这是唯一的选择,或者我在做一些愚蠢的事情。

谢谢

4

1 回答 1

3
myArticles = [glob.glob(article_path)]

应该:

myArticles = glob.glob(article_path)

glob.glob返回一个列表,通过[]在它周围添加你使它成为一个列表列表。

所以,在这个循环中:

for items in myArticles:
    get_html(items)

您实际上将整个列表传递给get_htmlopen引发了该错误。

演示:

>>> open([])
Traceback (most recent call last):
  File "<ipython-input-242-013dc85bc958>", line 1, in <module>
    open([])
TypeError: coercing to Unicode: need string or buffer, list found
于 2013-06-21T23:08:07.323 回答