2017-10-11 2 views
-1

Pourquoi os.path.isfile(os.path.abspath("adb.exe")) retourne-t-il la valeur false? J'ai adb.exe dans le même script avec os.path.isfile(os.path.abspath("fastboot.exe")) mais quand je les copie dans mon répertoire python, puis démarre shell interactif, par exemple. os.path.isfile(os.path.abspath("adb.exe")) me donne True. Ou il existe une meilleure façon de valider si le fichier existe dans le script de dir.os.path.isfile (os.path.abspath ("adb.exe")) Retour false

+2

Parce que python est en fait en cours d'exécution à partir du répertoire de python, pas l'emplacement du script –

+2

Vous pouvez obtenir le répertoire du script en utilisant 'répertoire, filepath = os .path.split (__ fichier __) ' – blakev

+0

mais, le problème est que ces fichiers pourraient être dans d'autres répertoires. comme, dans mon pc est c: \ adb.exe et sur onther pc cela pourrait être c: \ scripts \ python \ adb.exe –

Répondre

1

La raison os.path.isfile(os.path.abspath("adb.exe")) retours False est parce que lorsque vous exécutez le script, python est en fait en cours d'exécution de son répertoire d'installation, pas l'emplacement du script.

Si vous voulez obtenir le chemin du dossier en cours, vous pouvez utiliser:

os.path.dirname(os.path.abspath(__file__)) 

ou @blakev suggéré:

os.path.split(__file__)[0] 

Vous pouvez ainsi vérifier un fichier existe dans les scripts emplacement à l'aide:

os.path.isfile(os.path.dirname(os.path.abspath(__file__)) + os.sep + filename) 


note:

os.sep contient le séparateur approprié utilisé par le système de fichiers de votre système d'exploitation, donc \ sur les systèmes Windows.

__file__ n'existe que lors de l'exécution d'un fichier de script, cela ne fonctionnera pas uniquement en exécutant python dans la ligne de commande. Il retourne le chemin complet et le nom du script. À titre d'exemple, l'exécution d'un script sur mon ordinateur de bureau appelé script.py il peut retourner C:\Users\Nick A\Desktop\script.py

+0

Im newbie, alors s'il vous plaît, dites-moi ce que signifie _ _file_ _ –

+0

@Szymon '__file__' est l'emplacement du script qui est en cours d'exécution, y compris le nom du fichier, par exemple sur votre bureau, il peut évaluer à C: \ Utilisateurs \ Szymon R \ Desktop \ script.py' sur un système Windows –

+0

Pour clarifier, python.exe pourrait être exécuté avec n'importe quel répertoire de travail. Il est explicitement défini par ou implicitement hérité du processus parent. En supposant que python.exe ou py.exe est associé à des scripts Python, lorsque vous double-cliquez sur un script .py, normalement Explorer exécute Python avec le répertoire de travail défini dans le répertoire de script, mais aucun script ne devrait en dépendre. – eryksun