将目录中的所有文件作为名为正在加载的文件名的变量加载?

时间:2017-04-26 14:58:05

标签: python json file variables directory

我一直在尝试创建一个程序,允许用户创建一个存储笔记的文件。我已经设法让这部分失效但现在我遇到了将所有文件加载为程序其余部分可以轻松访问的变量的问题。我设法找到了两种方法来实现这一点。

一种是一次调用一个文件:

with open("file_name", "r") as working_notes:
    file_name = json.load(working_notes)

... # and repeat for every file that needs to be opened.

因为你可以成像,这将有点维护,并且需要在每次创建新文件时更新代码。在短期内如此伟大,以完成工作,但未来真的很糟糕。

第二种方法是使用元组打包/解包:

vzt_notes, rms_notes, nsr_notes, py_notes,\
vzt_keys, rms_keys, nsr_keys, py_keys, java_notes,\
java_keys= load_files(filenames) 
# calls a function that opens all files related to each variable

这实际上是有效的,我需要做的就是为元组列表添加一个变量名,它工作正常但是这仍然需要我在每次创建文件时编辑代码。通过调用函数,它更紧凑,部分自动化,但我需要完全自动化。

这是我陷入困境的地方。在尝试各种循环之后,我已经编写或尝试从列表中创建变量(失败的悲惨)当程序作为文件名的变量名启动时,我无法接通所有文件。

所以我的最新尝试只能打印出文件内容,但我仍然不确定如何获取文件的文件名,并使其成为与文件名同名的变量所以程序的其余部分可以查看和使用所述变量。

这是我上次尝试的内容:

import os

path = 'C:/Users/mcdomi3/Documents/MINTworkspace/MINT/NotesKeys/'

for filename in os.listdir(path):
    with open(path+filename, "r+") as filename:
        filename = json.load(filename)
        # print (filename)

正如我所说,最后一次尝试只是打印出列出的文件的内容,只是为了看看它是否实际上正在对文件做些什么。所以我知道我至少可以在for loop期间阅读它们。

1 个答案:

答案 0 :(得分:1)

我会使用dict来存储来自未知数量的笔记本文件的数据:

 @Bean
    public WsdlDefinition myWsdl() {
        return new SimpleWsdl11Definition(new ClassPathResource("/myWsdl.wsdl"));
    }

之后,您可以import os import json path = 'C:/Users/mcdomi3/Documents/MINTworkspace/MINT/NotesKeys/' notebook = dict() for filename in os.listdir(path): with open(path+filename, "r+") as filehandle: notebook[filename] = json.load(filehandle) 访问每个笔记本的内容。

如果您确实需要变量,请使用globals()

尝试此方法
notebook["file_name_of_notebook"]