使用Python中的URL替换嵌入数据

时间:2015-11-13 16:53:31

标签: python url flask

我有这个有效的Python代码。

from flask import Flask, jsonify

    app = Flask(__name__)

tasks = [
    {
        'id': 1,
        'title': 'Public',
        'description': 'Available to download',
        'done': False
    },
    {
        'id': 2,
        'title': 'Non-Public',
        'description': 'Not available to download',
        'done': False
    },
     {
        'id': 3,
        'title': 'Restricted-Public',
        'description': 'got to',
        'done': False
    }
]

@app.route('/api/PDL/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        abort(404)
    return jsonify({'task': task[0]})

if __name__ == '__main__':
    app.run(debug=True)

我正在尝试替换以下内容以从外部data.json中读取:

tasks = [
        {
            'id': 1,
            'title': 'Public',
            'description': 'Available to download',
            'done': False
        },
        {
            'id': 2,
            'title': 'Non-Public',
            'description': 'Not available to download',
            'done': False
        },
         {
            'id': 3,
            'title': 'Restricted-Public',
            'description': 'got to',
            'done': False
        }
    ]

我尝试使用tasks = open("/myproject/test.json"),但我收到以下Python错误。

TypeError: string indices must be integers

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

使用open加载文件时,您将内容作为字符串读入tasts。您需要转换为Python dictionary对象才能像以前的代码一样使用它。

试试JSON。要在文件中设置要启动的正确字符串,请执行以下操作:

import json

tasks = [
    {
        'id': 1,
        'title': 'Public',
        'description': 'Available to download', 
        'done': False
    },
    {
        'id': 2,
        'title': 'Non-Public',
        'description': 'Not available to download', 
        'done': False
    },
    {
        'id': 3,
        'title': 'Restricted-Public',
        'description': 'got to', 
        'done': False
    }
]

with open('/myproject/test.json', 'w') as f:
    f.write(json.dumps(tasks))

然后,以Python dictionary

加载文件的内容
import json

with open('/myproject/test.json') as f:
    tasks = json.loads(f.read())