从Python中的文本文件导入三维列表变量
我需要知道我是否可以通过文本文件中的声明轻松地在脚本中分配变量。基本上,我希望用户能够通过文本文件更改变量,以匹配所需的数字,而无需修改源代码 文本文件输入格式:从Python中的文本文件导入三维列表变量,python,list,variables,import,Python,List,Variables,Import,我需要知道我是否可以通过文本文件中的声明轻松地在脚本中分配变量。基本上,我希望用户能够通过文本文件更改变量,以匹配所需的数字,而无需修改源代码 文本文件输入格式: faultInfo = [ [["L1603",1,5],[271585,972739],[272739,872739, 272739,972739, 271585,972739, 271585,272389, 270999,272389]], [["L1605",1,5],[271
faultInfo = [
[["L1603",1,5],[271585,972739],[272739,872739, 272739,972739, 271585,972739, 271585,272389, 270999,272389]],
[["L1605",1,5],[271897,872739],[272739,872739, 272739,972739, 271891,872739, 271891,272119, 270963,272119]],
[["L1607",1,4],[271584,272738],[271584,272738, 271584,272388, 270998,272388, 270998,272386]]
]
我只想将其加载到脚本中具有相同名称的列表变量中。我是Python新手,不是CS专业的学生。我知道我可以使用循环之类的方法来加载三维列表,但似乎应该有一种快速的方法来实现这一点,因为第k维的大小是参差不齐的,并且会随情况而变化
提前谢谢
谢谢您可以创建一个.py文件,比如说
configuration.py
并将此变量放入该文件中。如果用户想要更改此变量中的数字,他或她只需通过简单的文本编辑器打开此文件并更正faultInfo声明。如果省略赋值,则使用函数是一种快速而肮脏的方法。例如,如果您的文件param.txt
是:
[
[["L1603",1,5],[271585,972739],[272739,872739, 272739,972739, 271585,972739, 271585,272389, 270999,272389]],
[["L1605",1,5],[271897,872739],[272739,872739, 272739,972739, 271891,872739, 271891,272119, 270963,272119]],
[["L1607",1,4],[271584,272738],[271584,272738, 271584,272388, 270998,272388, 270998,272386]]
]
一种简单的加载方式(如我所说)是:
with open('param.txt') as f:
file_text = ' '.join(f.readlines()) #Join lines with a blank ' ' space
parameter = eval(file_text)
此数据看起来非常简单,您可以使用
json.loads
或ast.literal\u eval
解析它(都在标准库中):
您可以很容易地从
file.read()
中获取字符串(a
,在我的示例中),是的,这将是我最后的选择。不过,我计划扩展这个程序,基本上希望所有必要的数据都集中到一个文本文件中,以便于使用。谢谢,这很有趣。我对python了解得越多,我就越喜欢它。@scorpiknox只要小心使用eval
,有人可能会在你的文件中写一些东西,比如“os.system('rm-rf/')”
,这可能非常糟糕;)。这就是我一直在寻找的,除了一些神奇的直接1比1。非常感谢。
>>> a = """[
... [["L1603",1,5],[271585,972739],[272739,872739, 272739,972739, 271585,972739, 271585,272389, 270999,272389]],
... [["L1605",1,5],[271897,872739],[272739,872739, 272739,972739, 271891,872739, 271891,272119, 270963,272119]],
... [["L1607",1,4],[271584,272738],[271584,272738, 271584,272388, 270998,272388, 270998,272386]]
... ]
...
... """
>>> import ast
>>> ast.literal_eval(a)
[[['L1603', 1, 5], [271585, 972739], [272739, 872739, 272739, 972739, 271585, 972739, 271585, 272389, 270999, 272389]], [['L1605', 1, 5], [271897, 872739], [272739, 872739, 272739, 972739, 271891, 872739, 271891, 272119, 270963, 272119]], [['L1607', 1, 4], [271584, 272738], [271584, 272738, 271584, 272388, 270998, 272388, 270998, 272386]]]
>>> import json
>>> json.loads(a)
[[[u'L1603', 1, 5], [271585, 972739], [272739, 872739, 272739, 972739, 271585, 972739, 271585, 272389, 270999, 272389]], [[u'L1605', 1, 5], [271897, 872739], [272739, 872739, 272739, 972739, 271891, 872739, 271891, 272119, 270963, 272119]], [[u'L1607', 1, 4], [271584, 272738], [271584, 272738, 271584, 272388, 270998, 272388, 270998, 272386]]]