Форум сайта python.su
Здравствуйте! Есть такой вот модуль corpus:
import os
class Corpus:
def __init__(self, adres):
self.adres=adres
def emails_as_string(self):
data=os.listdir(adres)
j=len(data)
i=0
while i < j:
a=(data[i])
if a[0]==('!'):
j=j-1
i=i-1
del data[0]
i=i+1
for i in range(j):
fname=data[i]
l=(adres+data[i])
l=l.rstrip()
a_file=open(l)
body=a_file.read()
return(body,fname)
corpus = Corpus(r'\path\to\directory\with\emails')
И
for fname, body in corpus.emails_as_string():
print(fname)
print(body)
print('-------------------------')
count += 1
print('Finished: ', count, 'files processed.')
Отредактировано (Ноя. 12, 2011 19:13:52)
Офлайн
надо везде писать self.adres или его определить в текущем контексте
adres=self.adres
Офлайн
adres=self.adres
NameError: global name ‘adres’ is not defined
Сейчас я делаю так:
import corpus
mc = corpus.Corpus('C:/1/')
for fname, body in mc.emails_as_string():
print(fname)
print(body)
Отредактировано (Ноя. 12, 2011 19:14:08)
Офлайн
А куда вы вставили магическую строчку?
def emails_as_string(self):
adres=self.adres
data=os.listdir(adres)
Офлайн
Да. Сейчас перезагрузил Shell, и теперь вообще все выглядит так:
>>> import corpus
>>> mc= corpus.Corpus('C:/1/')
>>> for fname, body in mc.emails_as_string():
print(fname, body)
.
Отредактировано (Ноя. 12, 2011 19:24:24)
Офлайн
Значит вам настала пора осваивать пошаговую отладку скриптов. выполняете и смотрите - то получается что надо или нет. Несколько странно что for вы решили выполнять один раз.
Офлайн
Как бы вы посоветовали поступить с for?
Отредактировано (Ноя. 12, 2011 19:52:13)
Офлайн
import os
import os
class Corpus:
def __init__(self, adres):
self.adres=adres
def emails_as_string(self):
for fname in os.listdir(self.adres):
if fname.startswith('!'):
continue
fullpath =os.path.join(self.adres, fname)
if os.path.isfile(fullpath):
yield open(fullpath).read(), fname
mails = Corpus(r'E:\test')
for x in mails.emails_as_string():
print x
Офлайн