2017-05-27 1 views
1

cmd je le script suivant test.py:Pourquoi est-ce script python fonctionne différemment dans Spyder vs prompt

import pathlib, os 

path = "C:\\Windows" 
pathparent = pathlib.Path("C:\\Windows").parent 

if os.path.exists(pathparent): 
    print("path exists") 

et quand je l'exécute dans Spyder IDE j'obtiens ceci:

path exists 

quand je le lance à partir de l'invite de commande (python test.py) Je reçois ceci:

Traceback (most recent call last): 
    File "test.py", line 6, in <module> 
    if os.path.exists(pathparent): 
    File "C:\Anaconda3\lib\genericpath.py", line 19, in exists 
    os.stat(path) 
TypeError: argument should be string, bytes or integer, not WindowsPath 

Une idée de pourquoi je reçois des résultats différents?

Note: Je sais que l'emballage pathparent dans str() fera la si réussir déclaration, mais ce que je veux savoir pourquoi les deux environnements donnent des résultats différents.

+2

Est-ce que spider et votre invite utilisent différentes versions de python? –

+0

C'est intéressant, j'ai ajouté print (sys.version) et j'ai obtenu "3.6.0 | Anaconda custom (64-bit) | (par défaut, 23 déc. 2016, 11:57:41) [MSC v.1900 64 bits (AMD64) ] "dans Spyder et" 3.5.0 | Anaconda 2.4.0 (64 bits) | (par défaut, 20 oct 2015, 07:26:33) [MSC v.1900 64 bits (AMD64)] "à l'invite de commande. – Mike

+0

essayez d'exécuter les deux en utilisant v3.6.0 et voir si l'erreur persiste –

Répondre

2

os.path.exists() a commencé à accepter les objets chemin d'accès dans Python 3.6 et votre problème se produit dans vos invites cmd car il exécute Python 3.5, changez-le à 3.6 pour résoudre votre problème.