我正在使用API,并试图通过遍历每个用户API令牌来提取调查的完整列表。我对循环的想法是,它一次读取一个API令牌(存储在列表中),存储数据,将其转换为pandas数据框,然后将数据存储在CSV文件中。到目前为止,我已经创建了一个脚本,该脚本可以成功遍历API令牌列表,但是每次都覆盖CSV文件。当前是我的脚本:
apiToken = ["n0000000000001", "N0000000002"]
for x in apiToken:
baseUrl = "https://group.qualtrics.com/API/v3/surveys"
headers = {
"x-api-token": x,
}
response = requests.get(baseUrl, headers=headers)
surveys = response.text
surveys2 = json.loads(response.text)
surveys3 = surveys2["result"]["elements"]
df = pd.DataFrame(surveys3)
df.to_csv('survey_list.csv', index=False)
为了将新行添加到CSV而不是覆盖新行,我需要进行哪些更改?
假设您的代码正确,这应该可以。您列出了单独的数据框,并将它们连接在一起。如果数据框(dfs)列表中的所有数据框具有相同的列名,则此方法有效。
apiToken = ["n0000000000001", "N0000000002"]
dfs = []
for x in apiToken:
baseUrl = "https://group.qualtrics.com/API/v3/surveys"
headers = {
"x-api-token": x,
}
response = requests.get(baseUrl, headers=headers)
surveys = response.text
surveys2 = json.loads(response.text)
surveys3 = surveys2["result"]["elements"]
dfs.append(pd.DataFrame(surveys3))
final_df = pd.concat(dfs)
final_df .to_csv('survey_list.csv', index=False)
使用csv包,您可以按如下所示将文件追加到csv:
import csv
...
with open(filename,'a') as filecsv:
writer = csv.writer(filecsv)
line = # whatever csv line you want to append
writer.writerow(line)