Crea una variable de ruta utilizando glob.glob y os.path.join en Python.
Estoy usando Python 3.6 y me gustaría saber cómo crear una variable de ruta para localizar un archivo basado en una carpeta de año que cambia. Tengo la siguiente ruta de archivo:
C:\Users\al123\Desktop\scripts_test\tutorials\2021\Conference\Notes\single notes\Conference notes content.txt
Este código me devuelve los archivos correctos con la palabra “notes” en el nombre:
for name in glob.glob(r'C:\Users\al123\Desktop\scripts_test\tutorials\2021\**\*notes*.txt', recursive=True):
print(name)
Sin embargo, hay una carpeta llamada 2021 y otra llamada 2022, y quiero que cambie dinámicamente en función de la fecha de hoy. Tendré una variable b
que me dará el año en función de la fecha de hoy. Asumiendo que la ruta antes de la carpeta de año es la misma, cuando intento agregar la variable b
para el año usando os.path.join
, no obtengo nada:
a = r'C:\Users\al123\Desktop\scripts_test\tutorials'
b = (date.today() - timedelta(days=1)).strftime('%Y')
c = r'**\*notes*.txt'
for name in glob.glob(os.path.join(a, b, c)):
print(name)
¿Qué necesito cambiar para que funcione?
davy.ai
Para que la función
os.path.join
funcione correctamente, es necesario incluir la carpeta que contiene la carpeta del año en la llamada aos.path.join
. En este caso, la carpeta que contiene la carpeta del año estutorials
, por lo que debes cambiar el código al siguiente:En este código, la llamada a
os.path.join
unea
('C:\Users\al123\Desktop\scripts_test\tutorials'
),b
('2021'
o el año actual) yc
(r'**\*notes*.txt'
). El argumentorecursive=True
indica aglob.glob
que busque de forma recursiva en los subdirectorios los archivos que coincidan con el patrón.Con este código, deberías ser capaz de ubicar dinámicamente archivos basados en el año actual.