Цель состоит в том, чтобы написать скрипт, который будет копировать текстовый файл и исключать любую строку, начинающуюся с #.
У меня вопрос, похоже, я получаю ошибку индекса, которая зависит от порядка моих условий if elif,Единственная разница между нерабочим кодом и рабочим кодом (кроме суффикса "_bad" к имени неработающей функции) заключается в том, что сначала я проверяю условие "" (работает), а сначала проверяется условие "#" (не работает)
Базовый файл создается с помощью этого сценария:
>>> testFileObj = open("test.dat","w")
>>> testFileObj.write("#line one\nline one\n#line two\nline two\n")
>>> testFileObj.close()
Код, который работает:
def copyAndWriteExcludingPoundSigns(origFile, origFileWithOutPounds):
origFileObj = open(origFile,"r")
modFileObj = open(origFileWithOutPounds,"w")
while True:
textObj = origFileObj.readline()
if textObj == "":
break
elif textObj[0] == "#":
continue
else:
modFileObj.write(textObj)
origFileObj.close()
modFileObj.close()
Код, который не работает:
def copyAndWriteExcludingPoundSigns_Bad(origFile, origFileWithOutPounds):
origFileObj = open(origFile,"r")
modFileObj = open(origFileWithOutPounds,"w")
while True:
textObj = origFileObj.readline()
if textObj[0] == "#":
continue
elif textObj == "":
break
else:
modFileObj.write(textObj)
origFileObj.close()
modFileObj.close()
Что дает мне эту ошибку:
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
copyAndWriteExcludingPoundSigns_Bad("test.dat","testOutput.dat")
File "<pyshell#94>", line 6, in copyAndWriteExcludingPoundSigns_Bad
if textObj[0] == "#":
IndexError: string index out of range