gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:27 24 4
gpt4 key购买 nike

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

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

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

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

正如您想象的那样,这将变得有点难以维护,并且需要在每次创建新文件时更新代码。短期内完成工作非常好,但 future 真的很糟糕。

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

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 循环 期间阅读它们。

最佳答案

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

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)

之后您可以通过 notebook["file_name_of_notebook"] 访问每个笔记本的内容。

如果您确实需要变量,请尝试使用 globals() 这种方法。 :

>>> new_name #variable not existing yet
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
new_name
NameError: name 'new_name' is not defined
>>> globals()["new_name"]="new value"
>>> print(new_name)
new value

关于python - 将目录中的所有文件加载为名为正在加载的文件名的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43637796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com