Python optpass查找字符串

Python optpass查找字符串,python,mysql,command-line,optparse,Python,Mysql,Command Line,Optparse,我有一个mysql数据库,我正试图打印一个特定学生的所有测试结果。我正在尝试创建一个命令行,在其中输入用户名,然后它将显示他/她的测试结果。 我已经访问了这个页面,但是我没有得到我的答案。 嗯,您应该做的第一件事是不要使用optparse,因为它已被弃用-请改用。我链接到的帮助非常有用,内容丰富,可以指导您创建解析器和设置不同的选项。通读之后,访问从命令行传递的变量应该没有问题 但是,脚本中还有其他错误会阻止它运行。首先,您不能使用open()命令打开目录-您需要使用os.listdir()进

我有一个mysql数据库,我正试图打印一个特定学生的所有测试结果。我正在尝试创建一个命令行,在其中输入用户名,然后它将显示他/她的测试结果。 我已经访问了这个页面,但是我没有得到我的答案。


嗯,您应该做的第一件事是不要使用
optparse
,因为它已被弃用-请改用。我链接到的帮助非常有用,内容丰富,可以指导您创建解析器和设置不同的选项。通读之后,访问从命令行传递的变量应该没有问题

但是,脚本中还有其他错误会阻止它运行。首先,您不能使用
open()
命令打开目录-您需要使用
os.listdir()
进行此操作,然后读取生成的文件列表。当
open()
ing文件时,最好使用上下文管理器:

filelist = os.listdir("/path/to/Index")
for filename in filelist:
    with open(filename, "r") as f:
        for line in f:
            # do stuff with each line
这样,您就不必担心以后关闭文件处理程序,这只是一种更干净的方法

你的问题中没有提供足够的信息来获取学生的分数,因此我恐怕无法帮助你。您(我假设)必须将从数据库查询出来的数据与
索引
目录中的文件(及其内容)连接起来。我怀疑如果学生成绩保存在数据库中,那么您需要使用SQL从数据库中检索它们,而不是尝试读取文件系统中的原始文件。您可以很容易地从命令行获取感兴趣的学生的姓名,但随后您必须将其插入SQL查询中以找到正确的表,从表中选择与学生的考试分数相对应的行,然后使用Python处理结果以打印出一个漂亮的摘要


祝你好运

好的,很好。你的问题是什么?代码有几个问题,首先是没有正确缩进。您还缺少一些结束语,并且输入了一个拼写错误。最后,您不应该命名列表、dict
dict
等,因为它掩盖了内置函数,只是格式不好。@user3784773您在第6行有一个输入错误
tpye=“string”
。我相信它是类型
if(name==line):
您知道在迭代文件时,生成的行包含换行符吗?你要用换行符插入名字吗?否则,等式将不起作用,因为
'John'!='John\n'
。不管怎么说,你想做的一切都很糟糕。如果您有SQL数据库,请使用SQL执行查询。
filelist = os.listdir("/path/to/Index")
for filename in filelist:
    with open(filename, "r") as f:
        for line in f:
            # do stuff with each line