Почему скрипт Python работает по-другому в приглашении Spyder vs cmd

У меня есть следующий скрипт test.py:

import pathlib, os

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

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

и когда я выполняю его в IDE Spyder, я получаю это:

path exists

когда я запускаю его из командной строки (python test.py), я получаю это:

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

Есть идеи, почему я получаю разные результаты?

Примечание: я знаю, что перенос pathparent в str() сделает оператор if успешным, но я хочу знать, почему две среды дают разные результаты.

1 ответ

Решение

os.path.exists() начал принимать объекты пути в Python 3.6, и ваша проблема возникает в ваших приглашениях cmd, так как он работает под управлением Python 3.5, измените его на 3.6, чтобы решить вашу проблему.

Другие вопросы по тегам