如何循环目录中的文件,并设置以文件命名的变量?

时间:2016-05-08 19:46:44

标签: python loops python-3.x variables for-loop

我有一个项目需要循环遍历目录中的文件,并设置以包含文件数据的文件命名的变量。

例如:

我的文件夹/tmp包含文件data_1.datdata_2.dat

data_1.dat

E-123

data_2.dat

B-321

当脚本运行时,它会生成两个变量:data_1.dat,其值为E-123data_2.dat。值为B-321

我试过这个,但我不知道我错过了什么:

for filename in os.listdir():
    filename = open(filename, 'r').read()

2 个答案:

答案 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="#">&#9776;</a></p>
</div>

然后,您可以使用files = {} for filename in os.listdir(): file_contents = open(filename, 'r').read() files[filename] = file_contents 循环浏览文件名。

  

如果由于某种原因你真的需要创建新变量,你可以使用全局变量或本地变量dict,具体取决于你是否在函数中。

files.keys()