Python的项目列表,单个字符串?

时间:2013-06-21 23:06:31

标签: python list glob

只是想知道是否有人能够善意地告诉我我做错了什么。 处理一些代码,与我的樱桃项目一起使用

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

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

由于

1 个答案:

答案 0 :(得分:3)

myArticles = [glob.glob(article_path)]

应该是:

myArticles = glob.glob(article_path)

glob.glob返回一个列表,通过在其周围添加[],您将其列为列表列表。

所以,在这个循环中:

for items in myArticles:
    get_html(items)

您实际上已将整个列表传递给get_html,而open提出了该错误。

演示:

>>> 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