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.

Obteniendo el mensaje de error “raise CalledProcessError(retcode, cmd)” al utilizar el comando cat desde un script de python.

Estoy utilizando el paquete subprocess como lo hice antes:

from subprocess import check_call, STDOUT
import os
import sys

for file in os.listdir('directory/'):
    if '1' in file:
        for file_ in os.listdir('directory/'):
            if '2' in file_:
                command = f"cat directory/file1 directory/file2 > directory/file3"
                check_call(command.split(), stdout=sys.stdout, stderr=STDOUT)

El mensaje de error completo:

cat: >: No such file or directory
cat: directory/file3: No such file or directory
Traceback (most recent call last):
  File "/home/script.py", line 12, in <module>
    check_call(command.split(), stdout=sys.stdout, stderr=STDOUT)
  File "/usr/lib64/python3.6/subprocess.py", line 311, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cat', 'directory/file1', 'directory/file2', '>', 'directory/file3']' returned non-zero exit status 1.

Cuando ejecuto el comando

cat directory/file1 directory/file2 > directory/file3

en Linux funciona correctamente.

¿Alguien tiene idea de cuál podría ser el problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema en el código se encuentra en el uso de “>” para redirigir la salida del comando “cat” al archivo “directory/file3”. “>” es una entidad HTML para el símbolo mayor que (>), que se utiliza para la redirección de salida en las shells de Linux, pero no es reconocido por el módulo subprocess de Python.

    Para solucionar el problema, reemplace “>” por “>” en la cadena de comando:

    comando = "cat directory/file1 directory/file2 > directory/file3"
    

    Esto redirigirá la salida del comando “cat” al archivo “directory/file3” utilizando el operador de redirección correcto.

Comments are closed.