这里需要借助python的第三方库pubchempy
(可以使用pip安装:pip install pubchempy)
首先定义文件的路径(这里的文件指的是你需要下载的化合物由smile码构成的txt文件),建议使用绝对路径:
filePath = "D:\1000.txt"; f = open(filePath, "r",encoding='utf-8')
读取文件然后将其命名为列表
file_open = f.readlines()
然后定义两个空的列表;
file_strip = [] list_3 = []
如果在txt里面的文本是换行写的,先将其换行符号去掉;
for line in file_open:
line = line.strip()
file_strip.append(str(line)) # 去掉每行头尾空白
下面需要将里面的文本转变成cid唯一标识
i = 0
for i in range(len(file_strip)):
list_1 = pcp.get_compounds(file_strip[i],'smiles')
str_list_1 = str(list_1)#将列表转为字符串
str_list_2 = re.findall(r'd+',str_list_1)#提取字符串中的数字
部分并赋值给列表str_list_2
```python str_list_3.extend( str_list_2)
print(list_3)
list_int = list(map(int,str_list_3))#将list_3字符串数组改为整形数组list_int
得到的list_int就是由cid构成的数组,下面只需将其用一个循环从网上下载即可。
```python
```python
for cid in list_int:
sdfpath = os.path.join('D:\', "{}.sdf".format(cid))#这里要设置路径
try:
pcp.download('SDF',sdfpath, overwrite=True, identifier=cid, record_type='3d')
except pcp.NotFoundError as e:
print('No 3d Conformer for {}.'.format(cid))
f.close()#最后别忘记关闭文档



