Я пишу приложение на Python, у которого будет много разных функций, поэтому логически я думал, что лучше всего разделить мой script на разные модули. В настоящее время мой script читает в текстовом файле, который содержит код, который был преобразован в токены и письма. Затем script восстанавливает код в строку с пустыми строками, где комментарии были бы в исходном коде.
У меня проблема с объектной ориентацией script. Что бы я ни старался, я не могу заставить программу работать так же, как если бы это был только один файл script. В идеале я хотел бы иметь два файла script, один из которых содержит класс и функцию, которая очищает и восстанавливает файл. Второй script просто вызовет функцию из класса в другом файле в файле, указанном в качестве аргумента из командной строки. Это мой текущий script:
import sys
tokenList = open(sys.argv[1], 'r')
cleanedInput = ''
prevLine = 0
for line in tokenList:
if line.startswith('LINE:'):
lineNo = int(line.split(':', 1)[1].strip())
diff = lineNo - prevLine - 1
if diff == 0:
cleanedInput += '\n'
if diff == 1:
cleanedInput += '\n\n'
else:
cleanedInput += '\n' * diff
prevLine = lineNo
continue
cleanedLine = line.split(':', 1)[1].strip()
cleanedInput += cleanedLine + ' '
print cleanedInput
Следуя совету Alex Martelli ниже, теперь у меня есть следующий код, который дает мне тот же результат, что и исходный код.
def main():
tokenList = open(sys.argv[1], 'r')
cleanedInput = []
prevLine = 0
for line in tokenList:
if line.startswith('LINE:'):
lineNo = int(line.split(':', 1)[1].strip())
diff = lineNo - prevLine - 1
if diff == 0:
cleanedInput.append('\n')
if diff == 1:
cleanedInput.append('\n\n')
else:
cleanedInput.append('\n' * diff)
prevLine = lineNo
continue
cleanedLine = line.split(':', 1)[1].strip()
cleanedInput.append(cleanedLine + ' ')
print cleanedInput
if __name__ == '__main__':
main()
Я все равно хотел бы разделить мой код на несколько модулей. У "очищенного файла" в моей программе будут выполняться другие функции, поэтому, естественно, очищенный файл должен быть классом по своему усмотрению?