Я пишу приложение на Python, которое будет иметь множество разных функций, поэтому логически я подумал, что лучше всего разбить мой скрипт на разные модули. В настоящее время мой скрипт читается в текстовом файле, который содержит код, который был преобразован в токены и письма. Затем скрипт восстанавливает код в строку с пустыми строками, в которых комментарии были бы в исходном коде.Создание сценария Python Объектно-ориентированный
У меня проблема с объектно-ориентированным сценарием. Что бы я ни пытался, я не могу заставить программу работать так же, как если бы это был всего лишь один файл сценария. В идеале я хотел бы иметь два файла сценариев, один из которых содержит класс и функцию, которая очищает и восстанавливает файл. Второй скрипт просто вызовет функцию из класса в другом файле в файле, указанном в качестве аргумента из командной строки. Это мой текущий сценарий:
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
После следуя совету Алекс Мартелли ниже, теперь у меня есть следующий код, который дает мне тот же результат, как мой исходный код.
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()
Я все же хотел бы разделить мой код на несколько модулей. У «очищенного файла» в моей программе будут выполняться другие функции, поэтому, естественно, очищенный файл должен быть классом сам по себе?
Предположим, у вас был объект, который вы хотите. Как бы вы его использовали? Другими словами, какой синтаксис вы хотите? –
В этой ситуации я бы рассматривал входной файл как объект. Процесс очистки - это функция, которую я хотел бы выполнять на указанном объекте. Имея это в виду, я хотел бы, как правило, использовать цикл for и сделать эту функцию очистки в моем классе входных файлов. – greenie