Los argumentos en línea de comandos está disponibles en una lista de cadenas: sys.argv
. El módulo "oficial" para tratamiento de la línea de comando es argparse
.
In [14]:
import sys
sys.argv
Out[14]:
In [12]:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity", help="increase output verbosity")
args = parser.parse_args()
if args.verbosity:
print("verbosity turned on")
In [2]:
import os
os.name
Out[2]:
In [3]:
os.environ
Out[3]:
In [4]:
os.getenv('SHELL')
Out[4]:
In [37]:
os.putenv('PATH', '/usr/bin:/usr/sbin:/usr/local/bin')
In [38]:
os.unsetenv('FOO')
In [4]:
os.chdir('/tmp/')
In [5]:
os.getcwd()
Out[5]:
Crear un directorio:
In [33]:
os.mkdir('/tmp/foo-dir')
Borrar un directorio:
In [32]:
os.rmdir('/tmp/foo-dir')
In [11]:
os.stat('/etc/motd')
Out[11]:
Crear una _pipe__:
In [14]:
os.pipe()
Out[14]:
Crear un FIFO (una named pipe):
In [27]:
os.mkfifo('/tmp/fifo')
Comprobar el acceso a un fichero para el usuario efectivo:
In [15]:
os.access('/etc/motd', os.R_OK)
Out[15]:
Cambiar los permisos de acceso a un fichero:
In [17]:
!touch /tmp/foo
In [20]:
import stat
os.chmod('/tmp/foo', stat.S_IWUSR)
Cambiar el propietario de un fichero:
In [22]:
uid = os.getuid()
gid = os.getgid()
os.chown('/tmp/foo', uid, gid)
Crear un enlace "duro":
In [30]:
os.link('/tmp/foo', '/tmp/bar')
Borrar un fichero:
In [34]:
os.remove('/tmp/bar')
Crear un enlace simbólico:
In [35]:
os.symlink('/tmp/foo', '/tmp/bar')
Listar el contenido de un directorio:
In [5]:
print(os.listdir('/'))
In [8]:
os.curdir
Out[8]:
In [9]:
os.pardir
Out[9]:
In [10]:
os.sep
Out[10]:
In [11]:
os.devnull
Out[11]:
Crear un subproceso:
In [36]:
os.fork()
Out[36]:
Esperar la terminación de un subproceso (y recoger su valor de retorno);:
In [ ]:
os.wait()
Terminar (con error) el proceso actual:
In [ ]:
# os.abort()
Ejecutar un binario en el proceso actual:
In [ ]:
# os.execl('/bin/ls', '')
Ejecutar un binario en un proceso nuevo:
In [ ]:
os.spawnl('/bin/ls', '')
Ejecutar un binario en un subproceso y obtener la salida estándar:
In [7]:
os.system('ls /')
Out[7]:
Obtener el PID actual:
In [20]:
os.getpid()
Out[20]:
El PID del padre del proceso actual:
In [21]:
os.getppid()
Out[21]:
UID del propietario del proceso actual:
In [10]:
os.getuid()
Out[10]:
GID del propietario del proceso actual
In [11]:
os.getgid()
Out[11]:
In [3]:
os.getgroups()
Out[3]:
Identificador del grupo de procesos:
In [16]:
os.getpgid(0)
Out[16]:
In [18]:
os.getpgrp()
Out[18]:
Crear una sesión y asignar un identificador de grupo.
In [ ]:
os.setsid()
In [36]:
os.getsid(os.fork())
Out[36]:
Creación de un subproceso con acceso a su entrada/salida: os.popen, os.popen2, os.popen3. Estas funciones son equivalentes a la llamadasal sistema POSIX, pero están obsoletas en favor del módulo subprocess.
In [3]:
print(os.popen('ls /').read())
Enviar una señal a un proceso (dado su PID):
In [10]:
import signal
child = os.fork()
os.kill(child, signal.SIGQUIT)
os.wait()
Out[10]:
Enviar una señal a un grupo de procesos
In [11]:
pid = os.fork()
if not pid:
os.setsid()
os.system('sleep 100')
os.exit(0)
os.killpg(pid, signal.SIGKILL)
os.wait()
Out[11]:
In [12]:
def handler(num, *args):
print num, args
signal.signal(signal.SIGQUIT, handler)
In [13]:
os.getlogin()
Out[13]:
In [ ]: