Я пытаюсь проверить, существует ли файл в Python, используя os.path.isfile()
, но он возвращает false, хотя файл существует. Например, когда я печатаю /Users/jordanbaron/Desktop/hero-bg.jpg
, это вывод
Enter the directory to the ISO file (or just drag the file here): /Users/jordanbaron/Desktop/hero-bg.jpg
/Users/jordanbaron/Desktop/hero-bg.jpg
<type 'str'>
False
И файл действительно существует.
Почему это происходит?
filename = raw_input("Enter the directory to the ISO file (or just drag the file here): ")
print(filename)
print(type(filename))
print(os.path.isfile(filename))
2 ответа
Ваш код, как опубликовано, работает:
Файл существует
/usr/bin/python2.7 /home/surest/github/tests/test.py
Enter the directory to the ISO file (or just drag the file here): /home/surest/Desktop/duties.odt
/home/surest/Desktop/duties.odt
<type 'str'>
True
Process finished with exit code 0
Опечатка в имени файла / пути
/usr/bin/python2.7 /home/surest/github/tests/test.py
Enter the directory to the ISO file (or just drag the file here): /home/surest/Desktop/meesa-typoed.odt
/home/surest/Desktop/meesa-typoed.odt
<type 'str'>
False
Process finished with exit code 0
Windows 7, Python 2.7
Если вы работаете с не ASCII-буквами, вам следует правильно декодировать ввод. Возможно, в вашем пути к файлу нет букв ASCII, которые мы не видим. Попробуйте этот код:
# -*- coding: utf-8 -*-
import os, sys, locale
filename = raw_input("Enter filepath: ").decode(sys.stdin.encoding or locale.getpreferredencoding(True))
print(filename)
print(type(filename))
print(os.path.exists(filename))
Работает для пути с кириллицей:
C:\Projects>c:\Python27\python.exe filepath.py
Enter filepath: c:\Projects\темп\jordanbaron\Рабочий стол\hero-bg.jpg
c:\Projects\темп\jordanbaron\Рабочий стол\hero-bg.jpg
<type 'unicode'>
True
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.