在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()
来解决它。
答
为什么你将行读入列表中,然后在事实之后进行检查?
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,因此您应该编写易于阅读的代码,即使时间稍长一点。此外,新的语法只适用于较新的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")
我在蟒蛇有点不好意思nooby,是有更多一点的解释任何机会? :\ – Dylan 2011-05-28 06:46:11
[字符串格式化操作](http://docs.python.org/library/stdtypes.html#string-formatting-operations),['glob'](http://docs.python.org/library/ glob.html)。 – 2011-05-28 06:47:56