Я пишу приложение на 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()
Я все равно хотел бы разделить мой код на несколько модулей. У "очищенного файла" в моей программе будут выполняться другие функции, поэтому, естественно, очищенный файл должен быть классом по своему усмотрению?
