在python中创建一个从file命名的变量

时间:2018-02-10 00:37:58

标签: python variables file-io global

我有几百个.txt文件需要加载,而不是输入每个文件的变量我喜欢自动化过程,它会为每个.txt文件创建一个变量,例如

Test.txt, Test1.txt and Test2.txt提供变量Test, Test1, Test2

然后,我将随后将每个.txt文件加载到相应的变量,例如

Test = glob.glob('Test.txt')
Test1 = glob.glob('Test1.txt')
Test2 = glob.glob('Test2.txt')

我可以创建一个包含' .txt'的所有文件名和条带的列表。主题,例如['Test', 'Test1', 'Test2']但我不确定如何(或者甚至可能)将此列表中的项目转换为变量。

我已经尝试过阅读并看到global()exec()可能有用,但我从未使用它们,并且看到很多人警告使用它们如此热衷于更多有经验的投入

提前致谢

3 个答案:

答案 0 :(得分:2)

为什么要像这样命名变量?

相反,您应该使用列表的元素作为键来创建字典。像这样:

keys = ['Test', 'Test1', 'Test2']
dict.fromkeys(keys, 0)

此代码将为您提供此词典:

{'Test': 0, 'Test1': 0, 'Test2': 0}

答案 1 :(得分:2)

不要从字符串创建变量名。事实上,理解所有*变量都是某个命名空间的actually dictionary keys themselves是有益的。

在您的情况下,您可以设置类似于以下字典:

d = {'Test'+str(i): glob.glob('Test'+str(i)+'.txt') for i in range(3)}

*但请参阅@ juanpa.arrivillaga的评论。

答案 2 :(得分:0)

感谢您的回复,根据这里的建议和训练有素的物理学家朋友,没有意识到字典是如此强大:

files = {f.replace(".txt", ""): open(f, "r").read() for f in glob.glob('*.txt')}

然后,我可以通过以下方式访问并按照我的要求执行操作:

files['filename']