从外部python文件(Django)中检索python列表



我正在尝试检索从外部python文件(algorithm.py(生成的python列表。在algorithm.py中有一组用于生成python列表的函数。algorithm.py文件没有问题,它生成了我所期望的python列表。我按照以下步骤将在algorithm.py中生成的python列表获取到views.py中。

1.(将变量(lec_name(从views.py中的函数传递给algorithm.py,并使用stdout作为以下语句检索输出。

lec_name = request.POST['selected_name']
result = run([sys.executable,'//Projects//altg//algorithm.py',lec_name], shell=False, stdout=PIPE)

2.(然后当我print(result.stdout)时,我接收输出(我期望的python列表(作为array of byte,如下所示。

b"[['0', 'Subject01(IS0001)', 'Z Hall(65)', 'Thursday 10:00-12:00'], ['1', 'Subject02(IS42255)', 'N Hall(90)', 'Wednesday 08:00-10.00']]rn"

3.(然后我使用print((result.stdout).strip())来去除rn,并给出如下输出。

b"[['0', 'Subject01(IS0001)', 'Z Hall(65)', 'Thursday 10:00-12:00'], ['1', 'Subject02(IS42255)', 'N Hall(90)', 'Wednesday 08:00-10.00']]"

这给出了我期望作为array of byte的python列表,所以我需要的是,将输出(我期望的python列表(检索为pythonlist。我该如何解决这个问题?我尝试了很多事情,但都没有成功。我使用的是Python 3.7.4,Django 3.0.1

尝试使用literal_eval,它可以安全地评估表达式节点或包含Python表达式的Unicode或Latin-1编码字符串:

import ast
data  = b"[['0', 'Subject01(IS0001)', 'Z Hall(65)', 'Thursday 10:00-12:00'], ['1', 'Subject02(IS42255)', 'N Hall(90)', 'Wednesday 08:00-10.00']]"
data_list = ast.literal_eval(data.decode())
print(type(data_list)) # output: <class 'list'>
print(data_list) # output: [['0', 'Subject01(IS0001)', 'Z Hall(65)', 'Thursday 10:00-12:00'], ['1', 'Subject02(IS42255)', 'N Hall(90)', 'Wednesday 08:00-10.00']]

最新更新