Найти - Пользователи
Полная версия: Как отправить переменную в класс
Начало » Python для новичков » Как отправить переменную в класс
1
vl_dex
Здравствуйте! Есть такой вот модуль 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.')
Так вот, как правильно написать coprus, чтобы все работало?

Сейчас при исполнении (NameError: global name ‘adres’ is not defined)

Извините, что написал все так смазано, просто новичок в python,
doza_and
надо везде писать self.adres или его определить в текущем контексте
adres=self.adres
vl_dex
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)
doza_and
А куда вы вставили магическую строчку?
        def emails_as_string(self):
adres=self.adres
data=os.listdir(adres)
так сделали?
vl_dex
Да. Сейчас перезагрузил Shell, и теперь вообще все выглядит так:
>>> import corpus
>>> mc= corpus.Corpus('C:/1/')
>>> for fname, body in mc.emails_as_string():
print(fname, body)








.
То есть пустота (точку я сам поставил внизу)
Помогает только рестарт Shella
doza_and
Значит вам настала пора осваивать пошаговую отладку скриптов. выполняете и смотрите - то получается что надо или нет. Несколько странно что for вы решили выполнять один раз.
vl_dex
Как бы вы посоветовали поступить с for?
sp3
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB