我一直收到以下错误
g:\ python_test> py3 lib \ libtest.py p = g:\ python_test \ SqlLogon.txt 追溯(最近一次通话):
中的文件“ lib \ libtest.py”,第43行i.printit('c:\mylog.log')
printit中第32行的文件“ lib \ libtest.py”
s = wos()
NameError:未定义名称“ wos”
如果我删除对os的调用并让s ='WINDOWS',则一切正常。 为什么不能调用该函数?以下是给出该问题的代码!
import sys
import platform
import os
import subprocess
class utl:
def __init__(self,path):
self.path = path
print ('p = ' + self.path)
def usr(self):
lc = open(self.path,'r')
up = lc.readlines()
u = up[0]
u = u.strip('\n')
p = up[1]
p = p.strip('\n')
return u,p
def wos(self):
p = platform.system()
print ('type = ' + str(type(p)))
return p.upper()
def printit(self,filetoprt):
s = wos() # undefined wos
#s = "WINDOWS"
print ('os1 = ' + s + ' ' + filetoprt)
if s == ('WINDOWS'):
os.startfile(filetoprt,'print')
#x = LogonSql.usr('g:\python_test\lib\jcd.txt')
i= utl('g:\python_test\SqlLogon.txt')
p = i.usr()
#t = i.wos()
i.printit('c:\mylog.log')
答案 0 :(得分:0)
wos
是您的班级成员,您应该使用
self.wos()
答案 1 :(得分:0)
wos()
是绑定到utl
类实例的方法,因此您需要这样引用它们。
将s = wos()
替换为s = self.wos()
。否则,您的代码将尝试访问尚未定义的全局范围(类外部)上的函数wos()
。