2016-03-13 3 views
-1

У меня есть тысячи текстовых файлов, содержащих очень длинный блок текста (около 200kb - 600kb каждый файл). Я хочу сохранить содержимое каждого файла в отдельной переменной и упростить его идентификацию. Я хочу сохранить их в переменной, которая совпадает с именем файла. Предположим, есть текст в файле «dog.txt». Я хочу сохранить его содержимое в переменной «собака».Python: Как создать переменную имени файла?

Возможно ли это? А если нет, я могу использовать словарь, но может ли он удерживать эту большую сумму? Или есть альтернативы?

PS: Пожалуйста, остановите downvoting: P Я осознал свою ошибку.

ответ

1

Накладные расходы на использование словаря здесь незначительны. Если вы можете обрабатывать строку 600K, вы также можете поместить ее в словарь. Таким образом, вы должны просто использовать словарь из имени файла на его содержание:

files = {'dog.txt' : 'Lorem ipsum dolor sit amet', 'cat.txt' : 'meow'} 
1

Вы можете решить эту проблему путем чтения файлов в словарь, где ключи являются именами файлов без расширения .txt и значения это содержимое файла. Что-то, как это будет работать:

filenames = ['bird.txt', 'cat.txt', 'dog.txt'] 
data = {} 

    for name in filenames: 
     with open(name) as f: 
      key = name.partition('.')[0] 
      data[key] = f.read() 

Вы можете получить доступ к содержимому файла, просматривая имя файла в словаре данных:

contents_of_dog_file = data['dog'] 
1

Лучшее, что вы можете сделать, это использовать словарь. Но вы также можете использовать «exec()» для создания переменных на месте, хотя словарь является для него подходящим инструментом. Предположим, что все ваши файлы не начинаются с номера или не содержат никаких недопустимых символов для имени переменной:

import os 
fileNames = os.listdir(os.path.join(os.getcwd(), 'subfoldername')) 
for fName in fileNames: 
    f = open(fName, 'r') 
    exec("{0} = '{1}'".join(fName.split('.')[0]), f.read()) 
    f.close() 

print(dog) #prints out content of the file "dog.txt" 
+1

Чтобы быть более явным: * не делайте этого. Это [плохая идея] (http://stackoverflow.com/questions/1373164/how-do-i-do-variable-variables-in-python). Вместо этого используйте словарь. –