0
我有这个文件的问题。当我启动它时,我收到第24行的错误。UnboundLocal错误文件
UnboundLocal Error : local variable 'file_out' referenced before assignment.
有关如何更正它的任何建议将不胜感激。我不得不说,我是一个完整的Python的noob,并没有自己写这个。
#!/usr/local/python
import sys, getopt
import os
usage="python correct_mol2.py -i 2qab_ligand.mol2 -o 2qab_ligand_new.mol2\n"
def main(argv):
try:
opts,args = getopt.getopt(sys.argv[1:],'hi:o:')
except getopt.GetoptError:
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print usage
sys.exit()
elif opt == '-i':
file_in = arg
elif opt == '-o':
file_out = arg
x=0
fout=file("%s"%file_out,"w")
for line in file(file_in):
# print line
if line.find("@<TRIPOS>BOND") >= 0:
x=0
if x==0:
fout.write(line)
if x==1:
if line[47:49] == '35' :
fout.write(line[:47]+"Br"+line[49:])
continue
if line[47:49] == '17' :
fout.write(line[:47]+"Cl"+line[49:])
continue
if line[47:48] == '9' :
fout.write(line[:47]+"F"+line[48:])
continue
if (line[47] == 'H' and line[48] ==' ') or line[47] == 'F' or line[47:49] == 'Br' or line[47:49] == 'Cl' :
fout.write(line)
continue
else:
fout.write(line[:48]+"."+line[48:54]+line[55:])
if line.find("@<TRIPOS>ATOM") >= 0:
x=1
fout.close()
main(sys.argv)
非常感谢您为您详细的答复。 主要问题是我真的不懂编程。我真的不知道要替换什么以及如何替换。 我很惭愧地问你,但你能否重写脚本,所以我只需要复制它并使其工作? 我是一名药物化学科学家,因此它将帮助我的研究专注于癌症。 – 2014-09-01 07:34:58
@XavierDrozak:我只做了一个有根据的猜测,可能会做些什么来改进您的代码。我无法完全为您重新编写您的代码;我无法访问您拥有的数据,也无法为您测试。找一个能编程的人,或者可以教你在附近进行编程,在一个更适合指导的环境中进行编程。我可以通过在线辅导计划获得(请参阅我的个人资料)。祝你好运! – 2014-09-01 07:47:31