我有几百个.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()
可能有用,但我从未使用它们,并且看到很多人警告使用它们如此热衷于更多有经验的投入
提前致谢
答案 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']