如何通过在python代码中打开从python文件中提取特定字典
我有下面的python文件“source.py”,其中包含字典(默认参数)。我只想从另一个python文件“destination.py”中提取默认参数字典 source.py: destination.py:如何通过在python代码中打开从python文件中提取特定字典,python,Python,我有下面的python文件“source.py”,其中包含字典(默认参数)。我只想从另一个python文件“destination.py”中提取默认参数字典 source.py: destination.py: text = open("source.py").read() print(text) 我只想提取下面的代码片段 default_args = { 'owner': 'kumar', 'team': 'data_engineering', 'start_dat
text = open("source.py").read()
print(text)
我只想提取下面的代码片段
default_args = {
'owner': 'kumar',
'team': 'data_engineering',
'start_date': timezone.datetime(2018, 4, 9, 0, 0, 0, tzinfo=LOCAL_TZ),
'provide_context': True,
'environment': ENV,
'email': 'venkatsiva789@gmail.com',
'email_on_failure': True,
}
请帮助提取上述代码片段,或者让我知道是否有任何内置模块可提取特定词典。假设您有另一个文件
main.py
,您需要此词典,因此:
# main.py
import source # full path if needed
default_args = source.default_args
如果你想用它作为口述,请看@Gocht的答案。如果要将其作为字符串,可以使用正则表达式:
import re
re.findall(r'default_args(?:.|\s)+}', text)
是否有任何原因使您无法从source import default_args导入模块并访问字典(如
)
。如果您仍然不想导入它(例如,您不想在其中运行代码),您可以使用模块轻松获取该赋值的值。但是,由于该值不仅仅由文本组成(有一个函数调用和andENV
变量,我不确定在哪里定义了该变量),因此如果不实际运行其代码,您将无法获取该值。谢谢回复。我不想导入文件,我需要从系统中打开文件并提取特定部分。为什么?你可以在任何时候导入你的代码,那么为什么要把它读入而不是仅仅导入?@shiva如果你把它读成文本,那是一段无用的文本,它不是一个有效的json,你必须使用eval
将它用作dict
,那么为什么呢?我想要dict对象,或者如果我将完整的dictionary提取为字符串,那么我可以将其转换为dict。您仍然可以看到它只提取默认的参数行,如“{”,我想要完整的dictionary.output of the regex:['{']请参阅编辑,我的错,它只是返回捕获组,但光标应该停在字典的末尾。它正在以字符串形式加载完整文件
import re
re.findall(r'default_args(?:.|\s)+}', text)