查成语的输出的成语比较多时,一屏显示不下,为了方便查看结果,决定保存输出到指定的文件。对查成语的代码进行修改,增加输出到文件的功能。命令参数为 “--outfile 文件名”。 代码如下:
import sqlite3
import argparse
def main():
#添加参数
parser = argparse.ArgumentParser()
parser.add_argument('word', help='要查询的成语')
parser.add_argument('-blur', action='store_true', help='开启模糊查询')
parser.add_argument('-detail', action='store_true', help='显示成语详细信息')
#增加outfile参数
parser.add_argument('-outfile', help='结果输出到文件')
#解析输入的参数
args=parser.parse_args()
word=args.word
isblur=args.blur
isShowDetail=args.detail
outfile=args.outfile
con=sqlite3.connect('cy/cy.db')
cursor=con.cursor()
fields=['word']
if isShowDetail:
fields.extend(['spell','paraphrase','source','example'])
strFields=','.join(fields)
sql=f'select {strFields} from cy '
strwhere=f" where word like '%{word}%'" if isblur else f" where word='{word}' "
sql =sql + strwhere
rows=cursor.execute(sql).fetchall()
if outfile!=None:
file=open(outfile,'w')
for row in rows:
t=row[0]
if isShowDetail:
t+=f"\n拼音:{row[1]}"
t+=f"\n释义:{row[2]}"
t+=f"\n出处:{row[3]}"
t+=f"\n示例:{row[4]}"
if outfile !=None:
file.write(t+ '\n')
else:
print(t)
if outfile!=None and file:
file.close()
if __name__=='__main__':
main()