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.
#!/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 asubprocess.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 asubprocess.call()
, no habrá\n
al final. Por último, no olvides cerrar el archivo después de leerlo coninfile.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étodorstrip()
en la cadena de línea antes de pasársela asubprocess.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