Python 2.7 python类中的python缩进错误
我一直在为python编写下面的类定义Python 2.7 python类中的python缩进错误,python-2.7,indentation,Python 2.7,Indentation,我一直在为python编写下面的类定义 class BPHmanager(object): """Class for BPHmanager""" def makeNewProject(self, projname): if os.path.exists(projname): print "Directory of that name already exists in current directory." sys.exit(2) # exit the
class BPHmanager(object):
"""Class for BPHmanager"""
def makeNewProject(self, projname):
if os.path.exists(projname):
print "Directory of that name already exists in current directory."
sys.exit(2) # exit the program.
else:
os.mkdir(projname)
os.chdir(projname)
os.mkdir(".bph")
os.mkdir(".bph/deletes")
defaults = raw_input("Add default datatypes to project? Yy/Nn > ")
if defaults == 'Y' or defaults == 'y':
self.Datatypes = {"reads": [], "assemblies": [], "alignments":[], "annotations":[]}
self.MetadataDefs["reads"] = []
self.MetadataDefs["assemblies"] = []
self.MetadataDefs["alignments"] = []
self.MetadataDefs["annotations"] = []
def saveSettings(self):
settingsfile = open(".bph/bph.settingsfile", 'w')
settingsdict = {self.Organisms, self.Datatypes, self.MetadataDefs}
settingsfile.write(json.dumps(settingsdict, separators=(',',':')))
settingsfile.close()
print "Saved changes to .bph/bph.settingsfile"
def __init__(self, argv):
# and so on
出于某种原因,如果我导入此文件以测试它或复制并粘贴到解释器中,我总是会遇到许多缩进错误,首先是:
def saveSettings(self):
File "<stdin>", line 1
def saveSettings(self):
^
IndentationError: unexpected indent
def保存设置(自):
文件“”,第1行
def保存设置(自身):
^
缩进错误:意外缩进
但是
saveSettings
函数的行开始于与前一个函数相同的缩进级别,因此我无法理解为什么会出现此错误。很可能是文件中的制表符和空格混合不一致。现在,制表符通常被认为是4个空格,但实际上有一个制表符字符,当你点击制表键时会被插入
但是,由于使用4个空格代替制表符进行缩进已经开始成为一种标准,许多文本编辑器默认使用4个空格作为自动缩进的方法,这将导致制表符字符(您点击制表键的字符)和4个空格(编辑器为您输入的字符)的混合。Python真的不喜欢这样,而且会出错。虽然空间正在成为一种标准,但您需要选择一个并保持一致
在升华中(我假设升华2),您可以转换前导制表符/空格,还可以将其设置为在按下制表键时自动将制表符扩展到4个空格。这里的Sublime文档对此进行了概述:
你试过四个缩进而不是两个吗?对我来说很有用。请检查以确保选项卡没有以某种方式潜入您的文件。(您可以使用
tabnanny
之类的工具进行检查,或者只在Sublime中打开不可见字符)。在Sublime中,我对选项卡的设置是:“tab_大小”:2,“translate_tabs_to_spaces”:True它似乎讨厌类的函数引用之间的空行。Python应该可以在函数引用之间使用空行,只要没有空白,即空白行上没有缩进。如果有制表符或空格,则会出错。Python真的像那样挑剔。