如何给现成.py程序加上循环?
新手刚接触python
网上找了一个代码想利用起来。
代码的框架大概是这样的
class do-sth:
balabala...
....有个常量1,常量2
def __init__(abc)
....
def fun1(abc)
.....
if __name__ == '__main__':
dobalabala = do-sth()
dobalabala.fun1()
现在我想把这个程序改造一下,将常量1,常量2改造一下
改成变量,变量从我文件中读取(a1,a2)
文件中a1和a2变量是用|分隔的。
类似这种:
abc|def
xyz|rst
zzz|ttt
单独读取并打印出来,我是可以做出来类似下面的
file = open("./data.txt")
for line in file.xreadlines():
str1 = line
a1 = str1.split('|')[0]
a2 = str1.split('|')[1]
求助:如何将 原来程序的功能引入到我这个循环里面呢?
我直接将原来的程序放在 上面语句之后,并且将原程序中的常量改成变量名字,a1,b1 ;测试下来,只是做了一次,也就是文件中最后的zzz,ttt套回原程序操作了一次。
前面的2次等于没操作。
如果将文件读取的for循环放最后,又提示a1,b1变量没有定义什么的。
请大侠指导,谢谢……
[解决办法]
修改__init__为:
def __init__(self, abc, a1, a2):
self.a1 = a1
self.a2 = a2
a1,a2用到实例中。
在调用时,
if __name__ == '__main__':
dobalabala = do-sth(a1, a2)
dobalabala.fun1()
[解决办法]
加到循环中
if __name__ == '__main__':
file = open("./data.txt")
for line in file.xreadlines():
str1 = line
a1 = str1.split('
[解决办法]
')[0]
a2 = str1.split('
[解决办法]
')[1]
dobalabala = do-sth(a1, a2)
dobalabala.fun1()
[解决办法]
完整的例子在这里:
#-*- coding: utf-8 -*-
class AObj(object):
# a1 = 'aaa'
# a2 = 'bbb'
def __init__(self, abc, a1, a2):
self.a1 = a1
self.a2 = a2
self.abc = abc
def func1(self):
f = self.abc
print f
if __name__ == '__main__':
f = open('./data.txt', 'r')
lines = f.xreadlines()
for line in lines:
lst = line.split('
[解决办法]
')
clsObj = AObj(lst[0], lst[1])
clsObj.func1()
if __name__ == '__main__':
f = open('./data.txt', 'r')
lines = f.xreadlines()
for line in lines:
lst = line.split('
[解决办法]
')
clsObj = AObj('abc', lst[0], lst[1])
clsObj.func1()