gpt4 book ai didi

写入问题后 Python 文件仍然为空

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:25 30 4
gpt4 key购买 nike

我正在尝试直接从 MYSQLDB 表和 tldextract 读取 URL,以从 url 获取域并找到该域的 SPF(发件人策略框架)记录。

当我尝试写入我扫描的每个域的 SPF 记录时,我的 Ouput_SPF_Records.txt 不包含我写入的任何记录。

不确定这个问题,有什么建议吗?

import sys
import socket
import dns.resolver
import re
import MySQLdb
import tldextract
from django.utils.encoding import smart_str, smart_unicode

def getspf (domain):
answers = dns.resolver.query(domain, 'TXT')
for rdata in answers:
for txt_string in rdata.strings:
if txt_string.startswith('v=spf1'):
return txt_string.replace('v=spf1','')

db=MySQLdb.connect("x.x.x.x","username","password","db_table")
cursor=db.cursor()
cursor.execute("SELECT application_id,url FROM app_info.app_urls")
data=cursor.fetchall()
x=0
while x<len(data):
c=tldextract.extract(data[x][1])
#print c
app_id=data[x][0]
#print app_id
d=str(app_id)+','+c[1]+'.'+c[2]
#with open('spfout.csv','a') as out:
domain=smart_str(d)
#print domain
with open('Ouput_SPF_Records.txt','w') as g:
full_spf=""
spf_rec=""
y=domain.split(',')
#print "y===",y,y[0],y[1]
app_id=y[0]
domains=y[1]
try:
full_spf=getspf(domains.strip())+"\n"
spf_rec=app_id+","+full_spf
print spf_rec
except Exception:
pass
g.write(spf_rec)
x=x+1
g.close()

最佳答案

尝试使用追加模式打开文件,而不是 w模式。 w mode 在每次迭代中覆盖文件。示例 -

with open('Ouput_SPF_Records.txt','a') as g:

最有可能的是,上次您以写入模式打开文件时,您没有写入任何内容,因为您捕获并忽略了所有异常,这导致了空文件。

此外,如果您知道预期的错误,您应该使用 except <Error>:而不是 except Exception: .示例 -

try:   
full_spf=getspf(domains.strip())+"\n"
spf_rec=app_id+","+full_spf
print spf_rec
except <Error you want to catch>:
pass

关于写入问题后 Python 文件仍然为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198923/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com