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

问题描述:

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

我在下面有一些代码(它还没有工作),第一个函数有一个类别参数,它们都是测试用例中预定义的文本文件名。我需要尝试打开下面定义的所有文本文件,将它们输入到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()来解决它。

+0

我在蟒蛇有点不好意思nooby,是有更多一点的解释任何机会? :\ – Dylan 2011-05-28 06:46:11

+0

[字符串格式化操作](http://docs.python.org/library/stdtypes.html#string-formatting-operations),['glob'](http://docs.python.org/library/ glob.html)。 – 2011-05-28 06:47:56

为什么你将行读入列表中,然后在事实之后进行检查?

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(...) 

itertools.chain; glob; list comprehensions

Python不是Perl,因此您应该编写易于阅读的代码,即使时间稍长一点。此外,新的语法只适用于较新的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")