只是想知道是否有人能够善意地告诉我我做错了什么。 处理一些代码,与我的樱桃项目一起使用
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
我假设它是因为我传递的文件名在字符串上有['和']列表, 我可以编写一个函数来修剪这些部分,但它是唯一的选择,或者我做的事情是愚蠢的。
由于
答案 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