这个问题以前曾被问过,但是我找不到它,对不起,我想知道是否有一种方法可以访问(或保存)一个类中的多个列表(或其他变量的内容),而不创建列表列表,然后在类之外解构列表列表。
这是一个例子
该类可在所选文件类型的目录中的所有文件上打开,并以列表形式输出每个文件的内容
class WithOpenFilesInDirectory:
def __init__(self, Directory, FileType):
self.Directory = Directory
self.FileType = FileType
def LoadFilesList(self):
for filename in glob.glob(os.path.join(self.Directory, self.FileType)):
with open(filename, "r") as Output:
print(filename)
Output = Output.readlines()
Output = [x.strip("\n") for x in Output]
print(Output)
WithOpenFilesInDirectory("data","*txt").LoadFilesList()
这是我在课外寻找的结束格式的示例
File1 = ['contents', 'of', 'file', 'one']
File2 = ['contents', 'of', 'file', 'two']
感谢您的帮助
答案 0 :(得分:0)
为简单起见,假设我们的两个文件如下所示:
File1.txt
contents
of
file
one
File2.txt
contents
of
file
two
它们被存储在脚本所在的data
目录中。
然后可以从collections.defaultdict
列表中的每个文件中收集行。然后,您可以从该词典中调用文件,并对行内容列表进行操作。
演示:
from glob import glob
from os.path import join
from os.path import basename
from os.path import splitext
from collections import defaultdict
class OpenFilesDirectory:
def __init__(self, directory, filetype):
self.path = join(directory, filetype)
def load_files_list(self):
lines = defaultdict(list)
for filename in glob(self.path):
name, _ = splitext(basename(filename))
with open(filename) as f:
for line in f:
lines[name].append(line.strip())
return lines
d = OpenFilesDirectory("data", "*.txt").load_files_list()
print(d)
输出:
defaultdict(<class 'list'>, {'File1': ['contents', 'of', 'file', 'one'], 'File2': ['contents', 'of', 'file', 'two']})
然后您可以像这样访问行:
>>> d['File1']
['contents', 'of', 'file', 'one']
>>> d['File2']
['contents', 'of', 'file', 'two']