instalar ejecutar desde consola compilar comandos linux python-2.7 mercurial

linux - ejecutar - instalar python en ubuntu



Ejecute el comando en el terminal de Linux usando un subproceso en python (1)

Para resolver su problema, cambie la línea f.write(subprocess... a:

f.write(subprocess.call([''hg'', ''log'', ''-r'', ''((last(tag())):(first(last(tag(),2))))'', ''dcpp'']))

Explicación

Al llamar a un programa desde una línea de comando (como bash), "ignorará" los " caracteres. Los dos comandos a continuación son equivalentes:

hg log -r something hg "log" "-r" "something"

En su caso específico, la versión original en el shell debe estar entre comillas dobles porque tiene paréntesis y esas tienen un significado especial en bash. En Python eso no es necesario ya que los está encerrando con comillas simples.

Quiero ejecutar el siguiente comando en el terminal de Linux usando python script

hg log -r "((last(tag())):(first(last(tag(),2))))" work

Este comando proporciona conjuntos de cambios entre las dos últimas etiquetas que tienen archivos afectados en el directorio "trabajo"

Lo intenté:

import subprocess releaseNotesFile = ''diff.txt'' with open(releaseNotesFile, ''w'') as f: f.write(subprocess.call([''hg'', ''log'', ''-r'', ''"((last(tag())):(first(last(tag(),2))))"'', ''work'']))

error:

abort: unknown revision ''((last(tag())):(first(last(tag(),2))))''! Traceback (most recent call last): File "test.py", line 4, in <module> f.write(subprocess.call([''hg'', ''log'', ''-r'', ''"((last(tag())):(first(last(tag(),2))))"'', ''work''])) TypeError: expected a character buffer object

Trabajando con os.popen ()

with open(releaseNotesFile, ''w'') as file: f = os.popen(''hg log -r "((last(tag())):(first(last(tag(),2))))" work'') file.write(f.read())

¿Cómo ejecutar ese comando usando subproceso?