#python #mysql #sql #text
#python #mysql #sql #текст
Вопрос:
Здравствуйте, мне просто интересно, возможно ли открыть несколько предопределенных текстовых файлов в 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'])
Возможно ли это? Если да, то как бы мне заставить это работать так, как мне нужно?
Заранее благодарю вас!
Ответ №1:
Используйте интерполяцию строк или форматирование, чтобы поместить категорию в спецификацию файла и glob.glob()
разрешить ее.
Комментарии:
1. Я немного новичок в python, извините, есть ли возможность получить немного больше объяснений? :
Ответ №2:
Почему вы зачитываете строки в список, а затем просматриваете его постфактум?
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(...)
Ответ №3:
Python — это не Perl, поэтому вы должны писать код, который легче читать, даже если он немного длиннее. Также синтаксис the new with доступен только на более новых pythons.
Вы должны быть в состоянии адаптировать эту последовательность к вашему коду
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")