为什么这不起作用 我将此代码编写为函数并且工作正常但是当我尝试使其成为一种方法时
import csv
import datetime
today = datetime.date.today()
todayStr = str(today)
def query(self,q):
self.q = q
with open('rodata.csv','r')as r:
reader = csv.reader(r)
for row in reader:
for field in row:
if field == q:
print(row)
Logger = logger
run = True
while run:
Logger.query(todayStr)
run = False
我得到这个:
TypeError: query() missing 1 required positional argument: 'q'
要先创建一个类,你需要class className
,在你的例子中logger
。然后,您不是在迭代行的每一列/字段,而是需要将其划分。最后,您需要在类创建中添加括号。
import csv
import datetime
today = datetime.date.today()
todayStr = str(today)
# add this line
class logger:
def query(self,q):
self.q = q
with open('rodata.csv','r') as r:
reader = csv.reader(r)
for row in reader:
# add this line, as row currently looks like ['timestamp a b c ...']
row=row[0].split()
for field in row:
if field == q:
print(row)
#add parenthesis
Logger = logger()
run = True
while run:
Logger.query(todayStr)
run = False
要记住的其他一点是,您的query
方法当前未返回任何内容。