在python中打开多个预定义的文本文件

在python中打开多个预定义的文本文件,python,mysql,sql,text,Python,Mysql,Sql,Text,您好,我只是想知道是否可以在python中打开多个预定义的文本文件 下面我有一些代码(它还不能工作),第一个函数有一个categories参数,这些参数都是在测试用例中预定义的文本文件名。我需要尝试打开下面定义的所有文本文件,将它们输入sql数据库 data_entry(categories): with open ((categories)"*.txt"), "r") as categories: lines = categories.readlines()

您好,我只是想知道是否可以在python中打开多个预定义的文本文件

下面我有一些代码(它还不能工作),第一个函数有一个categories参数,这些参数都是在测试用例中预定义的文本文件名。我需要尝试打开下面定义的所有文本文件,将它们输入sql数据库

data_entry(categories):
    with open ((categories)"*.txt"), "r") as categories:
        lines = categories.readlines()

    for line in lines:
        data = line.split()
        number = data[0]
        value = data[1]

    cursor.execute("""INSERT INTO popularity (PersonNumber, category, value)
                    VALUES(%s, %s, %s)""", (number, category, value))    

if __name__ == '__main__':
        data_entry(['movies', 'sports', 'actors', 'tv', 'games', \
        'activities', 'musicians', 'books'])
这可能吗?如果是这样的话,我该怎么做才能让它发挥作用呢


提前谢谢你

使用字符串插值或格式将类别放入filespec,并使用
glob.glob()
解析类别。

为什么要将行读入列表,然后在事实发生后再进行检查

import glob, itertools

def data_entry(categories):
    globs = [glob.iglob(category + "*.txt") for category in categories]
    for filename in itertools.chain(*globs):
        with open(filename) as f:
            for line in f:
                number, value = line.split()

                cursor.execute(...)

Python不是Perl,因此您应该编写更易于阅读的代码,即使代码稍微长一点。此外,新的with语法仅在较新的python上可用

您应该能够使这个序列适应您的代码

import fnmatch
import os

for file in os.listdir('.'):
    if fnmatch.fnmatch(file, '*.txt'):
        print(file)
或者只是:

data_entry(categories):
    foreach category in categories:
        f = open ("%s.txt" % (category)), "r")

我对python有点不了解对不起,有没有机会再解释一下?:\。