in

python: extrae el nombre del archivo de la ruta, sin importar el formato del sistema operativo / ruta

apple touch icon@2

Tanto en Python 2 como en 3, usando el módulo pathlib2:

import posixpath  # to generate unix paths
from pathlib2 import PurePath, PureWindowsPath, PurePosixPath

def path2unix(path, nojoin=True, fromwinpath=False):
    """From a path given in any format, converts to posix path format
    fromwinpath=True forces the input path to be recognized as a Windows path (useful on Unix machines to unit test Windows paths)"""
    if not path:
        return path
    if fromwinpath:
        pathparts = list(PureWindowsPath(path).parts)
    else:
        pathparts = list(PurePath(path).parts)
    if nojoin:
        return pathparts
    else:
        return posixpath.join(*pathparts)

Uso:

In [9]: path2unix('lala/lolo/haha.dat')
Out[9]: ['lala', 'lolo', 'haha.dat']

In [10]: path2unix(r'C:lala/lolo/haha.dat')
Out[10]: ['C:\', 'lala', 'lolo', 'haha.dat']

In [11]: path2unix(r'C:lala/lolo/haha.dat') # works even with malformatted cases mixing both Windows and Linux path separators
Out[11]: ['C:\', 'lala', 'lolo', 'haha.dat']

Con tu caso de prueba:

In [12]: testcase = paths = ['a/b/c/', 'a/b/c', '\a\b\c', '\a\b\c\', 'a\b\c',
    ...: ...     'a/b/../../a/b/c/', 'a/b/../../a/b/c']

In [14]: for t in testcase:
    ...:     print(path2unix
    ...:
    ...:
c
c
c
c
c
c
c

La idea aquí es convertir todos los caminos en la representación interna unificada de pathlib2, con diferentes decodificadores según la plataforma. Afortunadamente, pathlib2 incluye un decodificador genérico llamado PurePath que debería funcionar en cualquier camino. En caso de que esto no funcione, puede forzar el reconocimiento de la ruta de Windows usando fromwinpath=True. Esto dividirá la cadena de entrada en partes, la última es la hoja que está buscando, de ahí la path2unix

Si el argumento nojoin=False, la ruta se volverá a unir, de modo que la salida sea simplemente la cadena de entrada convertida a un formato Unix, que puede ser útil para comparar subrutas entre plataformas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

foreach loop

Perl foreach Loop

gfg 200x200 min

Función JavaScript parseInt () – GeeksforGeeks