Estoy escribiendo una aplicación en Python que tendrá muchas funciones diferentes, así que lógicamente pensé que sería mejor dividir mi script en diferentes módulos. Actualmente mi script lee en un archivo de texto que contiene código que se ha convertido en tokens y deletreos. El script luego reconstruye el código en una cadena, con líneas en blanco donde los comentarios habrían estado en el código original.Hacer una secuencia de comandos de Python Orientado a objetos
Tengo un problema al hacer la secuencia de comandos orientada a objetos. Todo lo que intento no parece hacer que el programa se ejecute de la misma manera que si fuera solo un archivo de script. Idealmente, me gustaría tener dos archivos de script, uno que contenga una clase y una función que limpie y reconstruya el archivo. El segundo script simplemente llama a la función de la clase en el otro archivo en un archivo dado como argumento desde la línea de comando. Este es mi script actual:
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
Después de seguir consejos Alex Martelli a continuación, ahora tengo el siguiente código que me da el mismo resultado que mi código original.
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()
Aunque me gustaría dividir mi código en varios módulos. Un "archivo limpio" en mi programa tendrá otras funciones en él, así que, naturalmente, un archivo limpio debería ser una clase en sí misma.
Supongamos que tiene el objeto que desea. Cómo lo usarías? En otras palabras, ¿qué sintaxis quieres? –
En esta situación, consideraría el archivo de entrada como el objeto. El proceso de limpieza es la función que me gustaría poder realizar en dicho objeto. Con esto en mente, me gustaría principalmente tomar el bucle for y hacer que la función de limpieza en mi clase de archivo de entrada. – greenie