¿Usar Python para eliminar líneas en un archivo que comienza con un octothorpe?

Esto parece una pregunta directa pero parece que no puedo identificar mi problema. Estoy tratando de eliminar todas las líneas en un archivo que comienza con un octothorpe (#) excepto la primera línea. Aquí está el bucle con el que estoy trabajando:

for i, line in enumerate(input_file): if i > 1: if not line.startswith('#'): output.write(line) 

El código anterior no parece funcionar. ¿Alguien sabe cuál es mi problema? ¡Gracias!

No estás escribiendo la primera línea:

 for i, line in enumerate(input_file): if i == 0: output.write(line) else: if not line.startswith('#'): output.write(line) 

Tenga en cuenta también que la enumerate (como la mayoría de las cosas) comienza en cero.

Un poco más conciso (y no repetir la línea de salida):

 for i, line in enumerate(input_file): if i == 0 or not line.startswith('#'): output.write(line) 

No me molestaría en enumerar aquí. Solo necesitas decidir qué línea es la primera línea y cuál no. Esto debería ser lo suficientemente fácil de manejar simplemente escribiendo la primera línea y luego usando un bucle for para escribir condicionalmente líneas adicionales que no comiencen con un ‘#’.

 def removeComments(inputFileName, outputFileName): input = open(inputFileName, "r") output = open(outputFileName, "w") output.write(input.readline()) for line in input: if not line.lstrip().startswith("#"): output.write(line) input.close() output.close() 

Gracias a twopoint718 por señalar la ventaja de usar lstrip.

Tal vez desee omitir líneas de la salida donde el primer carácter que no es un espacio en blanco es un octotorpe:

 for i, line in enumerate(input_file): if i == 0 or not line.lstrip().startswith('#'): output.write(line) 

(note la llamada a lstrip )