簡體   English   中英

初學者 Python 和 API - 如何讀取數據?

[英]Beginner Python and API - How to read data?

我是 Python 和 API 的新手。 我有一個 API 在工作中,我可以訪問並獲取計算機的詳細信息。
此時我只想嘗試一個非常基本的東西來練習並打印計算機名稱和 IP 地址。
使用 Python 的書,我有一個關於 API 的章節我正在嘗試以下作為測試並得到 200 響應,長度結果 = 10。所以初始連接正在工作。

import requests

# Make an API call and store response
url = 'https://removed.jamfcloud.com/JSSResource/advancedcomputersearches/id/8'

headers = {
    'accept': 'application/json',
}

r = requests.get(url, headers=headers, auth=('Username','Password'))
print(f"Status code: {r.status_code}")

#Store API response in a variable
response_dict = r.json()

#Process Results
print(response_dict.keys())

repo_dicts = response_dict['advanced_computer_search']
print(f"Length of repo_dicts is: {len(repo_dicts)}")

此時我只想從結果中獲取 1 條記錄並顯示計算機名稱和 IP。
有一件事要提的是,這本書使用了一些 GitHub API 作為他們的例子,但我正在修改它以使用我自己的。
書中說要添加以下代碼:

#Examine the first repository
repo_dict = repo_dicts[0]
print(f"Computer Name: {repo_dict['Computer Name']}")

失敗並說:
回溯(最近一次通話最后):
文件“...\API_Test_Jamf_1.py”,第 22 行,在
repo_dict = repo_dicts[0]
關鍵錯誤:0

這可能是有史以來最基本的事情,但我被困住了。
API 導致 web 瀏覽器啟動如下:

<advanced_computer_search>
<id>8</id>
<name>Test Pull</name>
<view_as>Standard Web Page</view_as>
<sort_1/>
<sort_2/>
<sort_3/>
<criteria>
<size>0</size>
</criteria>
<display_fields>
<size>102</size>
<display_field>
<name>Last Check-in</name>
</display_field>
<display_field>
<name>JSS Computer ID</name>
</display_field>
<display_field>
<name>Computer Name</name>
</display_field>
<display_field>
<name>IP Addresses</name>
</display_field>

接下來我需要做什么才能獲得:

  1. 首先記錄並顯示計算機名和 IP
  2. 所有記錄都顯示相同的 2 個字段?

這是結果的片段(開始):

print(response_dict)

{'advanced_computer_search': {'id': 8, 'name': 'InfraMI Pull', 'view_as': '標准 Web 頁面', 'sort_1': '', 'sort_2': '', 'sort_3': ' ', 'criteria': [], 'display_fields': [{'name': 'Last Check-in'}, {'name': 'JSS Computer ID'}, {'name': 'Computer Name'}, {'name': 'IP 地址'}, {'name': 'Local Admins'}, {'name': 'FileVault 2 Eligibility'}, {'name': 'Managed'}, {'name': ' Disable Automatic Login'}, {'name': 'Bootstrap Token Supported'}, {'name': 'Build Sequence'}, {'name': 'Build'}, {'name': '磁盤加密配置'} , {'name': 'Bar Code'}, {'name': 'Active Directory Status'}, {'name': 'AD Cert Expiration'}, {'name': 'AD Status'}, {'name ': '通過自動設備注冊'}, {'name': '電子郵件地址'}, {'name': 'MAC 地址'}, {'name': '磁盤格式'}, {'name': ' IP 地址'}, {'name': 'MDM Capability'}, {'name': 'XProtect 定義版本'}, {'name': '安全令牌用戶'}, {'name': '外部引導級別' }, {'name': 'SMC 版本'}, {'name': '處理器數量'}, {'name': '啟動驅動器可用 MB'}, {'name': '所需密碼長度'}, {'name': 'UDID'}, {'name': '計算機 Azure Active Directory ID'}, {'name': 'Gatekeeper'}, {'name': 'Supervised'}, {'name': 'Root Account'}, {'name': 'Asset Tag'}, {' name': '條件訪問清單狀態'}, {'name': 'SMAR.T. 狀態'}, {'name': 'Watermark'}, {'name': '激活鎖可管理'}, {'name': '總核數'}, {'name': '操作系統版本'} , {'name': 'Username'}, {'name': 'FileVault 2 Status'}, {'name': 'User Approved MDM'}, {'name': 'Platform'}, {'name': '序列號'}, {'name': 'Operating System'}, {'name': 'Operating System Build'}, {'name': 'FileVault 2 機構密鑰'}, {'name': '處理器類型'}, {'name': 'Firmware Password Set'}, {'name': 'Last Enrollment'}, {'name': 'Boot Drive Percentage Full'}, {'name': 'Maximum Passcode Age'} , {'name': 'Office License'}, {'name': 'Password History'}, {'name': 'Boot ROM'}, {'name': 'Drive Capacity MB'}, {'name' : '密碼類型'}, {'name': 'Bootstrap Token Escrowed'}, {'name': 'User Azure Active Directory ID'}, {'name': 'FileVault 2 Recovery Key Type'}, {'name ': '屏幕鎖定'}, {'name': '電池容量'}, {'name': 'Make'}, {'name': '系統完整性保護'}, {'name': '可用數量更新'} , {'name': 'JAMF Binary Version'}, {'name': 'Last Inventory Update'}, {'name': 'Bluetooth Low Energy Capability'}, {'name': 'Managed By'}, { 'name': '激活鎖已啟用'}, {'name': '上次 iCloud 備份'}, {'name': '可用的 RAM 插槽'}, {'name': 'NIC Speed'}, {'name' : '啟用遠程桌面'}, {'name': 'Optical Drive'}, {'name': 'Processor Speed MHz'}, {'name': 'Service Pack'}, {'name': 'Bus Speed MHz'}, {'name': 'Operating System Name'}, {'name': 'Master Password Set'}, {'name': 'Secure Boot Level'}, {'name': '最小復雜數Characters'}, {'name': 'FileVault 2 Individual Key Validation'}, {'name': 'FileVault Status'}, {'name': 'Total RAM MB'}, {'name': 'Architecture Type' }, {'name': 'iTunes Store Account'}, {'name': 'Full Name'}, {'name': 'Core Storage Partition Scheme on Boot Partition'}, {'name': 'Model Identifier' }, {'name': 'Model'}, {'name': 'Last Reported IP Address'}, {'name': 'FileVault 2 User'}, {'name': 'Applications'}, {'name ' : 'Cached Packages'}, {'name': 'Available SWUs'}, {'name': 'Enrollment Method: PreStage registration'}, {'name': 'Plug-ins'}, {'name': '本地用戶帳戶'}, {'name': 'Mapped Printers'}], 'computers': [{'name': 'HYDM002543514', 'udid': 'A082964F-EA4E-56BA-BD79-34554F542F58', 'id ':89,'Computer_Name':'HYDM002543514','Last_Check_in':'2019-11-18 13:25:24','JSS_Computer_ID':'89','IP_Addresses':''等......

謝謝

查看您發布的response_dict的結構(也許您應該嘗試放入一個編輯器,該編輯器可以很好地格式化它以幫助您解析它),您正在尋找的信息(計算機名稱和 IP)在“computers”下的列表,這是您回復中“advanced_computer_search”下的一個鍵。 在此之前的所有內容(這是您在此處粘貼的大部分內容)我認為是對您正在查詢的對象的描述。

要訪問該列表,您可以調用response_dict["advanced_computer_search"]["computers"]

要打印第一條記錄中的信息:

name = response_dict["advanced_computer_search"]["computers"][0]["Computer_Name"]
ip = response_dict["advanced_computer_search"]["computers"][0]["IP_Addresses"]
print(f"Computer Name: {name}, IP: {ip}")

對所有記錄執行相同操作:

for computer in response_dict["advanced_computer_search"]["computers"]:
    name = computer["Computer_Name"]
    ip = computer["IP_Addresses"]
    print(f"Computer Name: {name}, IP: {ip}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM