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?