我有一个项目需要循环遍历目录中的文件,并设置以包含文件数据的文件命名的变量。
例如:
我的文件夹/tmp
包含文件data_1.dat
和data_2.dat
。
data_1.dat :
E-123
data_2.dat :
B-321
当脚本运行时,它会生成两个变量:data_1.dat
,其值为E-123
,data_2.dat
。值为B-321
。
我试过这个,但我不知道我错过了什么:
for filename in os.listdir():
filename = open(filename, 'r').read()
答案 0 :(得分:1)
当您遇到需要在运行时确定变量名称的问题时(例如,基于输入字符串),您真正想要的是键值映射数据结构。在Python中,正确的方法是使用字典。
file_data = dict()
for filename in os.listdir():
file_data[filename] = open(filename, 'r').read()
现在,您可以按名称(file_data
)在file_data["my_file.txt"]
字典中查找每个文件的内容,并使用类似
for filename, contents in file_data.items():
print filename, len(contents)
答案 1 :(得分:1)
在运行时创建新变量几乎不是一个好主意。例如,在循环完成后你怎么知道要写的变量名呢?
相反,请使用带有文件名作为键的字典。
<div class="mobile-menu-icon">
<p><a id="mobileMenu" href="#">☰</a></p>
</div>
然后,您可以使用files = {}
for filename in os.listdir():
file_contents = open(filename, 'r').read()
files[filename] = file_contents
循环浏览文件名。
如果由于某种原因你真的需要创建新变量,你可以使用全局变量或本地变量dict,具体取决于你是否在函数中。
files.keys()