Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过在python代码中打开从python文件中提取特定字典_Python - Fatal编程技术网

如何通过在python代码中打开从python文件中提取特定字典

如何通过在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

我有下面的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_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导入模块并访问字典(如
。如果您仍然不想导入它(例如,您不想在其中运行代码),您可以使用模块轻松获取该赋值的值。但是,由于该值不仅仅由文本组成(有一个函数调用和and
ENV
变量,我不确定在哪里定义了该变量),因此如果不实际运行其代码,您将无法获取该值。谢谢回复。我不想导入文件,我需要从系统中打开文件并提取特定部分。为什么?你可以在任何时候导入你的代码,那么为什么要把它读入而不是仅仅导入?@shiva如果你把它读成文本,那是一段无用的文本,它不是一个有效的json,你必须使用
eval
将它用作
dict
,那么为什么呢?我想要dict对象,或者如果我将完整的dictionary提取为字符串,那么我可以将其转换为dict。您仍然可以看到它只提取默认的参数行,如“{”,我想要完整的dictionary.output of the regex:['{']请参阅编辑,我的错,它只是返回捕获组,但光标应该停在字典的末尾。它正在以字符串形式加载完整文件
import re
re.findall(r'default_args(?:.|\s)+}', text)