Python 中抛出“输出”异常[已关闭]

问题描述 投票:0回答:0

感谢您提前的帮助。

我在 Python 中收到此代码的异常抛出错误。我不明白为什么。

此代码连接到 FedEx API 并提取跟踪信息。从“1.Tracking Numbers.txt”文件中获取跟踪号码。然后,写入“3.Tracking Results.csv”文件。

谢谢

import requests
import csv
from dotenv import load_dotenv
import os


#Function to get authorization 
def getBearerAuthorization():
    url= "https://apis-sandbox.fedex.com/oauth/token"

    #Load client_secret
    load_dotenv()
    client_secret = 'secret_here'
    payload = 'grant_type=client_credentials&client_id=apikey_here&client_secret='+str(client_secret)
    headers = {
        'Content-Type': "application/x-www-form-urlencoded"
        }

    response = requests.request("POST", url, data=payload, headers=headers)

    authorization = (response.json()['access_token'])

    


#Variables and Parameters 
token = getBearerAuthorization()
url = "https://apis-sandbox.fedex.com/track/v1/trackingnumbers"
text = open('1. Tracking Numbers.txt',"r")
output=open('3. Tracking Results.csv',"w")
writer=csv.writer(output, lineterminator = '\n')
writer.writerow(['Tracking Number', 'Delivery Status', ' Recieved By', 'Date of Latest Scan'])

#complete API request
while True:

    trackingNumber = text.readline()

    if not trackingNumber:
        break
    
    headers = {
        'Content-Type': "application/json",
        'X-locale': "en_US",
        'Authorization': "Bearer "+str(token)
        }
    
    payload = '{ "trackingInfo": [ { "trackingNumberInfo": { "trackingNumber": "'+trackingNumber.strip()+'" } } ], "includeDetailedScans": true }'

    response = requests.post(url, data= payload, headers=headers)


    print(trackingNumber)

    trackingNumber = response.json()['output']['completeTrackResults'][0]['trackingNumber']
    deliveryStatus = response.json()['output']['completeTrackResults'][0]['trackResults'][0]['latestStatusDetail']['description']
    if deliveryStatus == "Delivered":
        recievedByName = response.json()['output']['completeTrackResults'][0]['trackResults'][0]['deliveryDetails']['receivedByName']
        scanEvent = response.json()['output']['completeTrackResults'][0]['trackResults'][0]['scanEvents'][0]
        dateDelivered = scanEvent['date'][0:10]
    else:
        recievedByName=""
        dateDelivered=""

    writer.writerow([trackingNumber,deliveryStatus,recievedByName,dateDelivered])


    
text.close()
output.close()
python api fedex
© www.soinside.com 2019 - 2024. All rights reserved.