最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

pubchempy: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接

互联网 admin 2浏览 0评论

pubchempy: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接

问题:
图1
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
urllib.error.URLError: <urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。>
原因:
访问次数过多,所以被限制使用。

图1 报错内容

原代码:

import urllibimport pubchempy
import pandas as pd
import numpy as np
with open('D:\\name1.txt','r',encoding='utf-8-sig') as file1:file_lines = file1.readlines()name_list=[]a=[]cc=[]d=[]e=[]f=[]g=[]
#readlines读取的每行是字符串格式,采用以下代码将其转换成列表格式for i in file_lines:j=i.strip() #去掉每行头尾空白name_list.append(str(j))for k in  name_list:results = pubchempy.get_compounds(k, 'name')for l in results:try:print('CID: {}\tMass: {}\tName: {}\tMolfor: {}\tSmi: {}\tSyn: {}'.format(l.cid,l.exact_mass,l.iupac_name,l.molecular_formula,l.isomeric_smiles,l.synonyms))MFs=l.molecular_formulaMWs=l.molecular_weightISs=l.isomeric_smilesSys=l.synonymsCis=l.cida.append(k)cc.append(MFs)d.append(ISs)e.append(Sys)f.append(Cis)g.append(MWs)except (pubchempy.BadRequestError,TimeoutError,urllib.error.URLError,ValueError):passdataframe=pd.DataFrame({'name':a,'molecular_formula':cc,'molecular_weight':g,'smiles':d,'synonyms':e,'cid':f})dataframe.to_csv ("D://1.csv",index=False,sep=',')

尝试解决方法,使用函数回调解决,具体操作为:将“pass”改为“imgdon(url)”
参见:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
更改后代码:

import urllibimport pubchempy
import pandas as pd
import numpy as np
with open('D:\\name1.txt','r',encoding='utf-8-sig') as file1:file_lines = file1.readlines()name_list=[]a=[]cc=[]d=[]e=[]f=[]g=[]
#readlines读取的每行是字符串格式,采用以下代码将其转换成列表格式for i in file_lines:j=i.strip() #去掉每行头尾空白name_list.append(str(j))for k in  name_list:results = pubchempy.get_compounds(k, 'name')for l in results:try:print('CID: {}\tMass: {}\tName: {}\tMolfor: {}\tSmi: {}\tSyn: {}'.format(l.cid,l.exact_mass,l.iupac_name,l.molecular_formula,l.isomeric_smiles,l.synonyms))MFs=l.molecular_formulaMWs=l.molecular_weightISs=l.isomeric_smilesSys=l.synonymsCis=l.cida.append(k)cc.append(MFs)d.append(ISs)e.append(Sys)f.append(Cis)g.append(MWs)except (pubchempy.BadRequestError,TimeoutError,urllib.error.URLError,ValueError):imgdon(url)dataframe=pd.DataFrame({'name':a,'molecular_formula':cc,'molecular_weight':g,'smiles':d,'synonyms':e,'cid':f})dataframe.to_csv ("D://1.csv",index=False,sep=',')

更改代码后运行结果:
搜寻到比第一次更多的化合物,但依旧出现了同样的问题,图2。

图2 更改代码后的运行结果

重新将**“imgdon(url)”改回“pass”**,运行结果又恢复正常,如图3。

图3 改回“pass”后的运行结果

神奇的操作,对于我这种不熟悉操作原理的小白,也许还有其他很多解决的方法,多了解,之后才不会遇到问题束手无策。

pubchempy: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接

问题:
图1
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
urllib.error.URLError: <urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。>
原因:
访问次数过多,所以被限制使用。

图1 报错内容

原代码:

import urllibimport pubchempy
import pandas as pd
import numpy as np
with open('D:\\name1.txt','r',encoding='utf-8-sig') as file1:file_lines = file1.readlines()name_list=[]a=[]cc=[]d=[]e=[]f=[]g=[]
#readlines读取的每行是字符串格式,采用以下代码将其转换成列表格式for i in file_lines:j=i.strip() #去掉每行头尾空白name_list.append(str(j))for k in  name_list:results = pubchempy.get_compounds(k, 'name')for l in results:try:print('CID: {}\tMass: {}\tName: {}\tMolfor: {}\tSmi: {}\tSyn: {}'.format(l.cid,l.exact_mass,l.iupac_name,l.molecular_formula,l.isomeric_smiles,l.synonyms))MFs=l.molecular_formulaMWs=l.molecular_weightISs=l.isomeric_smilesSys=l.synonymsCis=l.cida.append(k)cc.append(MFs)d.append(ISs)e.append(Sys)f.append(Cis)g.append(MWs)except (pubchempy.BadRequestError,TimeoutError,urllib.error.URLError,ValueError):passdataframe=pd.DataFrame({'name':a,'molecular_formula':cc,'molecular_weight':g,'smiles':d,'synonyms':e,'cid':f})dataframe.to_csv ("D://1.csv",index=False,sep=',')

尝试解决方法,使用函数回调解决,具体操作为:将“pass”改为“imgdon(url)”
参见:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
更改后代码:

import urllibimport pubchempy
import pandas as pd
import numpy as np
with open('D:\\name1.txt','r',encoding='utf-8-sig') as file1:file_lines = file1.readlines()name_list=[]a=[]cc=[]d=[]e=[]f=[]g=[]
#readlines读取的每行是字符串格式,采用以下代码将其转换成列表格式for i in file_lines:j=i.strip() #去掉每行头尾空白name_list.append(str(j))for k in  name_list:results = pubchempy.get_compounds(k, 'name')for l in results:try:print('CID: {}\tMass: {}\tName: {}\tMolfor: {}\tSmi: {}\tSyn: {}'.format(l.cid,l.exact_mass,l.iupac_name,l.molecular_formula,l.isomeric_smiles,l.synonyms))MFs=l.molecular_formulaMWs=l.molecular_weightISs=l.isomeric_smilesSys=l.synonymsCis=l.cida.append(k)cc.append(MFs)d.append(ISs)e.append(Sys)f.append(Cis)g.append(MWs)except (pubchempy.BadRequestError,TimeoutError,urllib.error.URLError,ValueError):imgdon(url)dataframe=pd.DataFrame({'name':a,'molecular_formula':cc,'molecular_weight':g,'smiles':d,'synonyms':e,'cid':f})dataframe.to_csv ("D://1.csv",index=False,sep=',')

更改代码后运行结果:
搜寻到比第一次更多的化合物,但依旧出现了同样的问题,图2。

图2 更改代码后的运行结果

重新将**“imgdon(url)”改回“pass”**,运行结果又恢复正常,如图3。

图3 改回“pass”后的运行结果

神奇的操作,对于我这种不熟悉操作原理的小白,也许还有其他很多解决的方法,多了解,之后才不会遇到问题束手无策。

发布评论

评论列表 (0)

  1. 暂无评论