You are on page 1of 3

Prctica 2.

1 Borrado de ficheros
Crea el directorio ~/las/practica02.
Escribe un script en python con nombre /las/practica02/borra_mios.py que
simular el borrado en un directorio de los ficheros del usuario que lo invoca.
1. Recibir como primer argumento un directorio. Si esto no se cumple (no recibe
ningnargumento, recibe ms de uno o el argumento no es un directorio) mostrar
un mensaje porstderr describiendo el problema
Ejemplo de invocacin:
borra_mios.py /tmp
Para saber qu funcin indica si un fichero es un directorio, consulta
lapythonstandard library, apartado
File and Directory Access | Common pathname manipulations
2. El script consultar cul es su directorio actual, ir al directorio que
indica el usuario,simular el borrado y luego volver al directorio actual
original, de forma que cuando elscript concluya, el directorio actual no haya
sido modificado.
Para saber qu funciones de python hacen esto, consulta la python standard
library,
apartado
Generic
OperatingSystemServices
|
Miscellaneousoperatingsysteminterfaces | Files and Directories
3. Simular el borrado de todos los ficheros de ese directorio cuyo dueo sea el
usuario queinvoca la orden. Para saber quin es este usuario, el script
consultar la variable de entornoUSER.
Decimos simular, porque para facilitar la depuracin y evitar accidentes,
realmenteno borrar nada, se limitar a mostrar por stdout las rdenes de Shell
que haran elborrado. Ejemplo:
rm probando.txt
rm practica02.txt
Si lo prefieres, tambin puede mostrar las sentencias en python que borraran el
Fichero.
4. Prueba este script en un directorio donde haya ficheros que sean tuyos y
ficheros que no losean. Por ejemplo, /tmp (si aqu no hay ningn fichero tuyo,
cralo).

Respuesta
#!/usr/bin/python -tt
importsys,os,pwd
iflen(sys.argv)==2 :
if not os.path.isdir(sys.argv[1]):
sys.stderr.write('Error: No es un directorio valido \n')
else:
directorio=sys.argv[1]
#aqui obtenemos el argumento del directorio
aeliminar
usuario=os.environ['USER'] #aqui obtenemos el nombre del usuario actual
pw=pwd.getpwnam(usuario)
#aqui obtenemos el directorio actual del usuario
uid_usuario=pw.pw_uid
#aqui obtenemos UID del usuario
for archivo in os.listdir(directorio):#aqui procedemos a simular el borrado
stad_info=os.stat(os.path.join(directorio,archivo))
ifstad_info.st_uid==uid_usuario:
ifnotos.path.isdir(os.path.join(directorio,archivo)):
#aqui mostramos el comando necesario para eliminar
print 'rm'+'\''+os.path.join(directorio,archivo)+'\''
else:
iflen(sys.argv)==1 :
sys.stderr.write('Error: tiene que introducir un argumento \n')

else:
sys.stderr.write('Error: solo se permite un solo argumento \n')

Prctica 2.2. mi_df.py

Escribe un script en python con nombre ~/las/practica02/mi_df.py que:


1. Invoque al mandato df, indicando que limite el listado a los sistemas de
ficheros locales.
2. Sume los valores de las columnas Bloques de 1K, Usado y Disponible.
3. Muestre por salida estndar el resultado de forma similar a esta:
S.ficheros
Bloques de 1K
Usado
Dispon Uso% Montado en
/dev/sda1
38753256
9468596 27331560 26% /
varrun
1020592
156
1020436
1% /var/run
varlock
1020592
0
1020592
0% /var/lock
udev
1020592
48
1020544
1% /dev
devshm
1020592
0
1020592
0% /dev/shm
lrm
1020592
39760
980832
4%
/lib/modules/2.6.24-19-generic/volatile
/dev/sda6
197532124
191952 187385096
1% /data
Nmero total de sistemas de ficheros montados:7
Espacio Total:241388340K
Espacio Usado:9700512K
Espacio Disponible:219779652K
(El apartado Espacio Total se corresponde con la suma de la columna Bloques de
1K)

Respuesta
#!/urs/bin/python -tt
import commands
import types
a=commands.getstatusoutput("df")
l=a[1].split('\n')
EsTotal=0
EsDisp=0
EsUsad=0
for j in xrange(len(l)):
d=l[j].split(' ')
z='1'
fori in xrange(len(d)):
try:
n=int(d[i])
if type(n)==types.IntType:
if z=='1':
EsTotal=EsTotal+n
z='2'
else:
if z=='2':
EsDisp=EsDisp+n
z='3'
else:
EsUsad=EsUsad+n
z='1'
except:

print
print
print
print

print ("")
a[1]+'\n'+'Numero total de sistemas de ficheros montados:'+str(len(l)-1)
'Espacio Total:'+str(EsTotal)+'K'
'Espacio Usado:'+str(EsUsad)+'K'
'Espacio Dispnible:'+str(EsDisp)+'K'

You might also like