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?
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:
Esto redirigirá la salida del comando “cat” al archivo “directory/file3” utilizando el operador de redirección correcto.