Python:如何创建文件名的变量?

时间:2016-03-13 08:25:34

标签: python dictionary variable-names

我有成千上万的文本文件包含很长的文本块(大约200kb - 每个文件600kb)。我想将每个文件的内容存储在一个单独的变量中,以便更容易识别它我想将它们存储在与文件名相同的变量中。假设文件中有一个文本' dog.txt'我想将它的内容存储在变量“狗”中。

有可能吗?如果没有,我可以使用字典,但它能保持那么多吗?或者有其他选择吗?

PS:请停止投票:P我意识到自己的错误。

3 个答案:

答案 0 :(得分:1)

这里有字典的开销可以忽略不计。如果你可以处理600K字符串,你也可以把它放在字典中。所以你应该只使用文件名中的字典到其内容:

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

答案 1 :(得分: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']

答案 2 :(得分: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"