Откройте несколько предопределенных текстовых файлов в Python - PullRequest
0 голосов
/ 28 мая 2011

Здравствуйте. Мне просто интересно, можно ли открыть несколько предопределенных текстовых файлов в 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'])

Возможно ли это? Если так, то как мне заставить это работать так, как мне нужно?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 28 мая 2011

Почему вы читаете строки в список, а затем просматриваете его после факта?

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; список понятий

0 голосов
/ 28 мая 2011

Python - это не Perl, поэтому вы должны писать код, который легче читать, даже если он немного длиннее. Также новый с синтаксисом доступен только для новых питонов.

Вы должны быть в состоянии адаптировать эту последовательность к вашему коду

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")
0 голосов
/ 28 мая 2011

Используйте интерполяцию или форматирование строки, чтобы поместить категорию в спецификацию файла, и glob.glob(), чтобы разрешить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...