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
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">
 
<source lang="python">
 
import os
 
import os

Revisió del 16:56, 27 abr 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.

import os
import shutil

print("Ejercicio: TEMP.\n")

path = input("Especificar la ruta del directorio: ")
#path = "C:\Soft\Temp"

# Ruta absuluta
folder_path = os.path.abspath(path)

# Eliminar carpeta si existe
if os.path.exists(folder_path):
    shutil.rmtree(folder_path)
    if not os.path.exists(folder_path):
        print(f"La carpeta {folder_path} se eliminó con éxito.")
    else:
        print(f"Ocurrió un error al eliminar la carpeta {folder_path}")
# Crear carpeta si no existe
else:
    os.mkdir(folder_path)
    if os.path.exists(folder_path):
        print(f"La carpeta {folder_path} se creó con éxito.")
    else:
        print(f"Ocurrió un error al crear la carpeta {folder_path}")

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”.

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}")

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

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)

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).

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))