es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python: Cómo generar una salida a un archivo en lugar de imprimir

¡Hola, soy un traductor de español que traduce documentos de IT. Aquí está la traducción al español del texto que has proporcionado:

¡Hola! Soy nuevo aquí.

Tengo un archivo de texto que contiene encabezados fasta (aproximadamente 1.5K; abc.txt):

CP008746 location=complement(3239792..3241504),organism=Methanosarcina barkeri CM1,definition=methyl-coenzyme M reductase alpha subunit McrA
CP009530 location=complement(2979486..2981198),organism=Methanosarcina barkeri 227,definition=Methyl coenzyme M reductase alpha subunit

Y quiero eliminar todo excepto la primera sección:

CP008746
CP009530

He estado aprendiendo Python durante las vacaciones, así que he escrito esto (Python3.7.6):

with open(“abc.txt”,”r+”) as archivo_datos:
for linea in archivo_datos:
datos = linea.split()
del datos[1:]
print(datos)

Esto me da la salida que quiero, pero no estoy seguro de cómo guardar los resultados en un nuevo archivo. He intentado con print(datos, file=archivo_datos), pero solo muestra algunas de mis líneas en lugar de todas. He resuelto esto copiando y pegando manualmente en un archivo nuevo, pero debe haber una forma de guardar automáticamente todo, ¿verdad?

Agradezco cualquier ayuda y pido disculpas si esta pregunta ya ha sido respondida.

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¡Hola principiante!

    Para imprimir los resultados directamente en un nuevo archivo, puedes crear un nuevo objeto archivo y escribir los resultados en él. Aquí tienes un snippet de código actualizado:

    with open("abc.txt", "r") as archivo_datos, open("output.txt", "w") as archivo_salida:
        for linea in archivo_datos:
            datos = linea.split()
            del datos[1:]
            archivo_salida.write(" ".join(datos) + "\n")
    

    En este código, abrimos tanto el archivo de entrada abc.txt como el archivo de salida output.txt. Recorremos las líneas del archivo de entrada y dividimos cada línea por los espacios en blanco. Luego, eliminamos todo en datos, excepto el primer elemento. Por último, unimos el primer elemento en un string y lo escribimos en el archivo de salida seguido de un carácter de nueva línea.

    Ten en cuenta que no estamos usando el modo r+ para el archivo de entrada, ya que solo necesitamos leer de él.

    ¡Espero que esto te sea útil! Avísame si tienes alguna pregunta adicional.

Comments are closed.