我正在编写一个代码,其中最终结果(用 x 表示)要导出到 csv 文件。我使用了一个 for 循环来迭代,但它只导出结果的最后一行。我的完整代码如下:
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 循环这也不起作用
就像 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')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句