Как проверить, содержит ли текстовый файл URL или JSON?

#python #flask

Вопрос:

У меня есть написанные коды (приложение FLASK), которое получает текстовый файл и проверяет, содержит ли он URL или JSON. Если это URL-адрес, он получает его и показывает как JSON пользователю, иначе, если это JSON, он показывает его только таким, какой он есть для пользователя. Я хотел бы знать, являются ли мои коды правильным представлением этих вещей.Текстовый файл может быть представлен в следующих формах (JSON или URL):

text.txt > ‘{«имя»:»Джон», «возраст»:30, «автомобиль»:ноль}’

text.txt > http://example.com/contents/example.json

 from flask import Flask, jsonify, abort, make_response
from flask_restful import Resource, Api
import requests, json
import urllib.request as request

app = Flask(__name__)
api = Api(app)


@app.route('path', methods=["POST"])
@app.error
class test(Resource):     
    def do_test(self):
        
        with open("test.txt", "r") as md:
            text = md.read()
            for i in text.readlines():
                URL = requests.get(i)
                if URL.ok:
                    data = json.loads(URL.read())
                    return jsonify(data)
                else:
                    abort(make_response(jsonify(404, message = "No URL found"),400))
            elif text.read(1) in '{[':
                data = json.load(text)
                return jsonify(data)    
                  
            
api.add_resource(test, 'path')

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


 

Комментарии:

1. Что это file ? Что это make_response ? Что это jsonify ? Каково содержание файла в том или ином случае?

2. Я только что отредактировал коды. файл должен быть заменен текстом. Я также импортировал make_response

3. … Каково содержание файла в том или ином случае?

4. На самом деле, содержание файла пока неизвестно, так как оно будет предоставлено мне позже. Я просто хочу создать логику, которая проверяет, является ли текстовый файл URL-адресом или JSON. Если это JSON, он напрямую показывает пользователю, если нет, и это URL-адрес, получает его, извлекает его данные и показывает его как json пользователю.

5. Я знаю, что ты пытаешься сделать. Можете ли вы предоставить два файла примеров для обоих возможных результатов?

Ответ №1:

Вы можете использовать блок «попробовать/кроме». Что-то вроде

 try:
   data = json.load(text)
except JSONDecodeError:
   url = text
 

Вам нужно будет протестировать его и добавить соответствующие исключения, JSONDecodeError-это всего лишь пример, но вы поняли суть.