我正在尝试将 curl 请求转换为 get-request 以提取一些工作数据并将其传输到具有参数化文件名的本地文件夹。一个问题是数据只是文本格式,即使尝试了多种方法,也不会转换为 JSON。根据响应,数据类型为“text/tsv;charset=utf-8”。
下一个问题是我无法将数据加载到数据框中,部分原因是我是 Python 新手,不了解这样做的各种方法,部分原因是格式化使找到适用的解决方案变得更加困难。但是,我至少能够使用 splitlines() 方法将文本分成列表。但不幸的是,我仍然无法将列表加载到数据框中。截至上次运行,错误消息是:“错误:无法连接类型为 '<class '_csv.reader'>' 的对象;只有 Series 和 DataFrame objs 有效。”
import requests
import datetime
import petl
import csv
import pandas as pd
import sys
from requests.auth import HTTPBasicAuth
from curlParameters import *
def calculate_year():
current_year = datetime.datetime.now().year
return str(current_year)
def file_name():
name = "CallDetail"
year = calculate_year()
file_type = ".csv"
return name + year + file_type
try:
response = requests.get(url, params=parameters, auth=HTTPBasicAuth(username, password))
except Exception as e:
print("Error:" + str(e))
sys.exit()
if response.status_code == 200:
raw_data = response.text
parsed_data = csv.reader(raw_data.splitlines(), delimiter='\t')
table = pd.DataFrame(columns=[
'contact_id',
'master_contact_id',
'Contact_Code',
'media_name',
'contact_name',
'ani_dialnum',
'skill_no',
'skill_name',
'campaign_no',
'campaign_name',
'agent_no',
'agent_name',
'team_no',
'team_name',
'disposition_code',
'sla',
'start_date',
'start_time',
'PreQueue',
'InQueue',
'Agent_Time',
'PostQueue',
'Total_Time',
'Abandon_Time',
'Routing_Time',
'abandon',
'callback_time',
'Logged',
'Hold_Time'])
try:
for row in table:
table.append(parsed_data)
except Exception as e:
print("Error:" + str(e))
sys.exit()
petl.tocsv(table=table, source=local_source+file_name(), encoding='utf-8', write_header=True)