Déterminer si la chaîne d'entrée pourrait être un répertoire valide en Python
Je suis en train d'écrire réutilisable qui gère les arguments de ligne de commande qui pourra par la suite être transmis à une autre fonction. Cette autre fonction qui va gérer l'ensemble de la création du répertoire (si nécessaire). Par conséquent, mon bp a uniquement besoin de vérifier si une chaîne d'entrée pourrait être un répertoire valide, OU un fichier valide, OU (autre chose). c'est à dire il doit différencier entre quelque chose comme "c:/users/username/" et "c:/users/username/img.jpg"
def check_names(infile):
#this will not work, because infile might not exist yet
import os
if os.path.isdir(infile):
<do stuff>
elif os.path.isfile(infile):
<do stuff>
...
De la bibliothèque standard ne semble pas offrir toutes les solutions, mais l'idéal serait:
def check_names(infile):
if os.path.has_valid_dir_syntax(infile):
<do stuff>
elif os.path.has_valid_file_syntax(infile):
<do stuff>
...
Après avoir réfléchi à la question, tout en les tapant, je ne peux pas imaginer un moyen de vérifier (uniquement basée sur la syntaxe) si une chaîne contient un fichier ou d'un répertoire autre que l'extension du fichier et slash (qui peuvent ne pas y être). Peut-être juste répondu à ma propre question, mais si quelqu'un a des idées sur mes divagations s'il vous plaît poster. Merci!!!!
OriginalL'auteur mlh3789 | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas quel système d'exploitation que vous utilisez, mais le problème, c'est que, sous Unix, au moins, vous pouvez avoir les fichiers sans extension. Donc
~/foo
peut être soit un fichier ou un répertoire.Je pense que la chose la plus proche que vous pourriez obtenir est: est-ce
OriginalL'auteur Chris Barker
Si je ne suis malentendu,
os.path
ne possèdent les outils dont vous avez besoin.Ces fonctions dans le chemin comme un string, je crois que c'est ce que vous voulez. Voir
os.chemin d'accès.isdir
etos.chemin d'accès.existe
.Oui, je ne vous méprenez. Jetez un oeil à ce post .
Ah, oui, j'ai raté la partie où est être un chemin d'accès. Merci.
Merci que le post a été utile.
Malheureusement je ne peux pas upvote en raison de mon état de novice, mais pensez à ceci.
OriginalL'auteur Sajjan Singh