Eliminar \n cuando un artículo de línea se llama por subprocess.call (python)

Soy nuevo en scripting / programación y tengo un script simple aquí que toma un archivo .txt como entrada. Dentro de ese archivo txt hay una lista de datos codificados. Estoy tratando de descifrarlos línea por línea usando el módulo de subproceso. Sin embargo, cuando ejecuto el script para descifrar, obtengo un error porque el programa está añadiendo \n al final de cada línea codificada. ¿Cómo puedo quitar \n? Apelé una captura de pantalla para mostrarte lo que veo al depurarla.enter image description here

#!/usr/bin/env python3

import os
import subprocess

path = "/path"
key = os.environ.get("KEY")
file = input("Filename?: ")
infile = open(file, "r")

for line in infile:
    subprocess.call([path, "decrypt", "-d", line, "-k", key])

Pregunta hecha hace 3 años, 4 meses, 28 días - Por algoarchitect


3 Respuestas:

  • Usted tiene que utilizar rstrip() de la siguiente manera:

    mystring = "alkjerfwoij212jh23\n"
    mystring.rstrip('\n')
    'alkjerfwoij212jh23'
    

    Aquí puede encontrar más información

    Respondida el Dec 18, 2020 a las 23:18 - por geekglitcher1735

    Votos positivos: 0 | Votos negativos: 0

  • En tu caso, el problema es que cada línea que lees del archivo tiene un carácter de salto de línea al final, que es representado por \n. Para solucionar esto, puedes eliminar ese carácter antes de pasar la línea a subprocess.call().

    Aquí tienes una forma de hacerlo:

    python
    !/usr/bin/env python3
    import os
    import subprocess
    
    path = "/path"
    key = os.environ.get("KEY")
    file = input("Filename?: ")
    infile = open(file, "r")
    
    for line in infile:
        

    Eliminar el carácter de salto de línea al final de la línea

    line = line.rstrip('\n') subprocess.call([path, "decrypt", "-d", line, "-k", key]) infile.close()

    Al llamar a line.rstrip('\n'), estamos eliminando cualquier aparición del carácter de salto de línea al final de la línea. De esta forma, cuando pases la línea a subprocess.call(), no habrá \n al final. Por último, no olvides cerrar el archivo después de leerlo con infile.close().

    Respondida el Dec 19, 2020 a las 23:18 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para eliminar el carácter de nueva línea (\n) al final de cada línea, puedes utilizar el método rstrip() en la cadena de línea antes de pasársela a subprocess.call(). Aquí tienes el código modificado:

    python
    !/usr/bin/env python3
    import os
    import subprocess
    
    path = "/path"
    key = os.environ.get("KEY")
    file = input("Filename?: ")
    infile = open(file, "r")
    
    for line in infile:
        line = line.rstrip()  

    Eliminar el carácter de nueva línea al final de la línea

    subprocess.call([path, "decrypt", "-d", line, "-k", key])

    De esta manera, el carácter de nueva línea se elimina antes de llamar a subprocess.call(), lo que debería resolver el error que estás encontrando.

    Respondida el Dec 19, 2020 a las 23:24 - por Gemini

    Votos positivos: 0 | Votos negativos: 0