[英]Python df.to_csv only prints last line even if for loop is present
我正在編寫代碼,將最終結果(用x表示)導出到csv文件。 我使用了for循環進行迭代,但是stil它僅導出結果的最后一行。 我的完整代碼如下:
import csv
import itertools
import requests
import json
import pandas as pd
domainfile=open('domainsinfo.csv',newline='',encoding='utf_8')
reader=csv.reader(domainfile)
w=[]
for row in reader:
w.extend(row)
domain = list(itertools.permutations(w,1))
print(domain)
def url_report(domain):
url = 'https://www.virustotal.com/vtapi/v2/url/report'
params = {'apikey': '', 'resource':domain}
response = requests.get(url, params=params)
return response
def pp_json(json_thing, sort=True, indents=4):
if type(json_thing) is str:
print(json.dumps(json.loads(json_thing), sort_keys=sort,
indent=indents))
else:
print(json.dumps(json_thing, sort_keys=sort,
indent=indents))
return None
for d in domain:
response = url_report(d)
json_response = response.json()
pretty_json = pp_json(json_response)
response_list=[]
for key in json_response['scans']:
if json_response['scans'][key] ['detected'] is True:
response_list.append(True)
else:
response_list.append(False)
x=any(response_list)
print(x)
for d in domain:
final_list=[]
final_list.append(x)
result=(final_list)
result_table = {'Domain': [d], 'Result':result}
df=pd.DataFrame(data=result_table)
print(df)
export_csv = df.to_csv (r'C:\csv', index=None, header=True)
print(pretty_json)
input()
有人可以解釋為什么即使存在for循環也無法正常工作
發生這種情況是因為在每個循環中,.csv被下一個覆蓋。
df.to_csv將df導出到csv文件中。
您可以嘗試將此代碼帶出循環,或動態更改文件名(取決於您的需要)。
就像提到的liakoyras一樣,您正在以CSV格式編寫數據框。 有很多方法可以解決您的問題。 當他建議合並時,我在這里使用append給您另一個選擇。 閱讀文檔以獲取更多信息。
這是修改代碼塊的方法,代碼內部的注釋中有解釋:
######## Declare a dataframe outside the loop
final = pd.DataFrame()
for d in domain:
........................
your other codes
........................
result_table = {'Domain': [d], 'Result':result}
df=pd.DataFrame(data=result_table)
###### keep appending df to final
###### the final df now gets updated in every loop
final = final.append(df)
#### now outside the loop, write final dataframe to your csv
final.to_csv('your/path/file.csv')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.