Академический Документы
Профессиональный Документы
Культура Документы
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')
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'