Diferència entre revisions de la pàgina «ASIX-M3-UF3-A1.1- Solucions Gestió de fitxers i directoris»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
<!---->
 
 
1. Feu un programa que actuï de manera diferent segons si existeix o no una carpeta anomenada “Temp” en un directori concret. Si no existeix, l'ha d'intentar crear. Si existeix, l'ha d’esborrar. Cada cop que es realitza una acció, cal dir si s'ha pogut dur a terme i la ruta absoluta de la carpeta processada.
 
1. Feu un programa que actuï de manera diferent segons si existeix o no una carpeta anomenada “Temp” en un directori concret. Si no existeix, l'ha d'intentar crear. Si existeix, l'ha d’esborrar. Cada cop que es realitza una acció, cal dir si s'ha pogut dur a terme i la ruta absoluta de la carpeta processada.
 +
 +
<!--
 +
<source lang="python">
  
 
import os
 
import os
Línia 27: Línia 29:
 
     else:
 
     else:
 
         print(f"Ocurrió un error al crear la carpeta {folder_path}")
 
         print(f"Ocurrió un error al crear la carpeta {folder_path}")
 +
</source>
 +
-->
 +
 +
2. Genereu un programa que demani a l'usuari dues cadenes de text de tres lletres, de manera que les pugui escriure pel teclat en una mateixa línia, i un directori. El programa ha de cercar tots els fitxers en el directori que tinguin com a extensió la primera cadena de text i canviar-la a la segona. Per exemple, si l'usuari escriu “txt doc”, tots els fitxers amb extensió ”.txt” han de passar a tenir l'extensió ”.doc”.
 +
 +
<!--
 +
<source lang="python">
 +
 +
import os
 +
 +
print("Ejercicio: Cambio de extensiones de archivos.\n")
 +
 +
# Intro extensiones de archivo y comprobando que realmente contienen 3 caracteres.
 +
len_ext1 = 0
 +
len_ext2 = 0
 +
 +
while len_ext1 !=3 or len_ext2 !=3:
 +
    extensiones = input("Especifique las extensiones de archivo separadas por espacios: ")
 +
    #Extencion1 y Extencion2
 +
    ext1, ext2 = extensiones.split()
 +
    #Número de caracteres en cada extensión de archivo
 +
    len_ext1 = len(ext1)
 +
    len_ext2 = len(ext2)
 +
 +
# Ruta de la carpeta
 +
check_exist_carpeta = False
 +
while not check_exist_carpeta:
 +
    path = input("Especificar la ruta del directorio: ")
 +
    # Ruta absuluta
 +
    folder_path = os.path.abspath(path)
 +
 +
    if os.path.exists(folder_path):
 +
        check_exist_carpeta = True
 +
 +
# Operaciones
 +
# Lista de ficheros
 +
list_ficheros = os.listdir(folder_path)
 +
 +
#Analizar la lista de archivos
 +
rename_counter = 0
 +
for fichero in list_ficheros:
 +
    # Ruta absuluta del fichero
 +
    fichero_path = os.path.join(folder_path, fichero)
 +
    # Comprobar la extensión del archivo
 +
    if fichero.endswith(f".{ext1}"):
 +
        # Cambiar la extencion del fichero
 +
        nuevo_fichero_path = os.path.splitext(fichero_path)[0] + f".{ext2}"
 +
        os.rename(fichero_path, nuevo_fichero_path)
 +
        rename_counter += 1
 +
 +
#Imprimir resultado
 +
print(f"Número de archivos a los que se les cambió la extensión de {ext1} a {ext2}: {rename_counter}")
 +
</source>
 +
-->
 +
 +
3. Realitzeu un programa que, en executar-se, llegeixi des del teclat la ruta a una carpeta del vostre ordinador i una mida en Kb. Llavors, ha de mostrat per pantalla tots els fitxers (no les carpetes) amb una mida superior a la donada per l’usuari. (Recordeu que 1 Kb = 1024 bytes.) Si la carpeta no existeix, ha de mostrar un missatge d'error.
 +
<!--
 +
>>> os.stat('uno.txt').st_size 2899
 +
 +
<source lang="python">
 +
import os
 +
 +
print("Ejercicio: Búsqueda de archivos de gran tamaño.\n")
 +
 +
# Ruta de la carpeta
 +
check_exist_carpeta = False
 +
while not check_exist_carpeta:
 +
    path = input("Especificar la ruta del directorio: ")
 +
    # Ruta absuluta
 +
    folder_path = os.path.abspath(path)
 +
 +
    # Salir del ciclo o imprimir un error
 +
    if os.path.exists(folder_path):
 +
        check_exist_carpeta = True
 +
    else:
 +
        print("Especifique la ruta a una carpeta existente.")
 +
 +
# Tamaño del archivo
 +
file_size = int(input("Especifique el tamaño de los archivos a buscar en kilobytes: "))
 +
 +
# Lista de ficheros
 +
list_ficheros = os.listdir(folder_path)
 +
 +
# Buscar específicamente archivos en la carpeta cuyo tamaño en kilobytes sea superior al tamaño especificado
 +
print(f"La lista de archivos de la carpeta {folder_path} cuyo tamaño es superior a {file_size} kilobytes:")
 +
for fichero in list_ficheros:
 +
    fichero_path = os.path.join(folder_path, fichero)
 +
    if os.path.isfile(fichero_path) and os.stat(fichero_path).st_size > file_size * 1024:
 +
        print(fichero)
 +
</source>
 +
-->
 +
 +
4. Feu un programa que pregunti per pantalla el nom (o part del nom) d'un fitxer i la ruta a una carpeta. Aquestes dades les introduirà l'usuari pel teclat. Llavors el programa ha de cercar i mostrar per pantalla la ruta absoluta de tots els fitxers amb aquest nom a partir de la carpeta assenyalada (tant directament dintre seu com dins d'altres carpetes successives).
 +
 +
<!--
 +
<source lang="python">
 +
import os
 +
 +
print("Ejercicio: Búsqueda de archivos por máscara.\n")
 +
 +
# Ruta de la carpeta
 +
check_exist_carpeta = False
 +
while not check_exist_carpeta:
 +
    path = input("Especificar la ruta del directorio: ")
 +
    # Ruta absuluta
 +
    folder_path = os.path.abspath(path)
 +
 +
    # Salir del ciclo o imprimir un error
 +
    if os.path.exists(folder_path):
 +
        check_exist_carpeta = True
 +
    else:
 +
        print("Especifique la ruta a una carpeta existente.")
 +
 +
# Que buscamos?
 +
text_para_buscar = input("Buscar palabra (distingue mayúsculas de minúsculas): ")
 +
 +
print(f"Lista de ficheros en los que se encuentra {text_para_buscar}:")
 +
# Coger todos los archivos y carpetas dentro de la carpeta folder_path y sus subcarpetas.
 +
# os.walk devuelve tres valores para cada elemento dentro de la carpeta:
 +
# root - la ruta a la carpeta actual,
 +
# carpetas - una lista de nombres de subcarpetas
 +
# ficheros - una lista de nombres de archivos en la carpeta actual
 +
for root, carpetas, ficheros in os.walk(folder_path):
 +
    # Ahora comprobar cada archivo con la máscara text_para_buscar
 +
    for fichero in ficheros:
 +
        if text_para_buscar in  fichero:
 +
            # Imprimir la ruta completa del archivo encontrado
 +
            print(os.path.join(root,  fichero))
 +
 +
</source>
 +
-->

Revisió de 14:25, 14 set 2023

1. Feu un programa que actuï de manera diferent segons si existeix o no una carpeta anomenada “Temp” en un directori concret. Si no existeix, l'ha d'intentar crear. Si existeix, l'ha d’esborrar. Cada cop que es realitza una acció, cal dir si s'ha pogut dur a terme i la ruta absoluta de la carpeta processada.


2. Genereu un programa que demani a l'usuari dues cadenes de text de tres lletres, de manera que les pugui escriure pel teclat en una mateixa línia, i un directori. El programa ha de cercar tots els fitxers en el directori que tinguin com a extensió la primera cadena de text i canviar-la a la segona. Per exemple, si l'usuari escriu “txt doc”, tots els fitxers amb extensió ”.txt” han de passar a tenir l'extensió ”.doc”.


3. Realitzeu un programa que, en executar-se, llegeixi des del teclat la ruta a una carpeta del vostre ordinador i una mida en Kb. Llavors, ha de mostrat per pantalla tots els fitxers (no les carpetes) amb una mida superior a la donada per l’usuari. (Recordeu que 1 Kb = 1024 bytes.) Si la carpeta no existeix, ha de mostrar un missatge d'error.

4. Feu un programa que pregunti per pantalla el nom (o part del nom) d'un fitxer i la ruta a una carpeta. Aquestes dades les introduirà l'usuari pel teclat. Llavors el programa ha de cercar i mostrar per pantalla la ruta absoluta de tots els fitxers amb aquest nom a partir de la carpeta assenyalada (tant directament dintre seu com dins d'altres carpetes successives).