Utilisez la source Luke:
def basename(p):
"""Returns the final component of a pathname"""
i = p.rfind('/') + 1
return p[i:]
Modifier (réponse à la clarification):
Cela fonctionne pour les URL par accident, c'est tout. À cause de cela, l'exploitation de son comportement pourrait être considérée comme une odeur de code par certains.
Essayer de « réparer » (vérifier si le chemin passé n'est pas URL) est étonnamment difficile
www.google.com/test.php
[email protected]/12
./src/bin/doc/goto.c
sont en même temps les chemins corrects et les URL (par rapport), est donc le http:/hello.txt
(un/, et seulement sur Linux, et c'est un peu stupide :)). Vous pouvez le "réparer" pour les URLs absolus, mais ceux qui sont relatifs continueront à fonctionner. Gérer un cas particulier différemment est un grand non non dans le monde python.
Pour résumer: importer ce
Clarification: Je ne parle pas de/pourquoi/cela fonctionne (pour lequel le code source est évidemment aller loin); Je demande plutôt pourquoi devrait-il fonctionner du tout (par la politique - en particulier sur Windows 'est le séparateur de chemin) –
Microsoft OS acceptent '/' barre oblique comme un séparateur de chemin de 'Dos 2', bien que de' Dos 3' en utilisant '/' a été désactivé par la commande shell (ce n'est plus le cas) car elle était en conflit avec la notation de l'option de ligne de commande. A cause de cela, de nombreuses implémentations ne sont tout simplement pas conscientes de la validité de '/'. Python est apparemment. En outre, vous ne pouvez pas utiliser les barres obliques avec le préfixe '" \\? \ "'. sources http://bytes.com/topic/python/answers/23123-when-did-windows-start-accepting-forward-slash-path-separator et http://msdn.microsoft.com/fr-fr/library /aa365247(VS.85).aspx#paths – n611x007