os.path.exists не принимает ввод переменных - PullRequest
1 голос
/ 17 октября 2010

Каждый раз, когда я вызываю os.path.exists (переменная), он возвращает false, но если я вызываю os.path.exists ('/ this / is / my / path'), он возвращает true.

import os
import sys

test = None
print("Test directory")
test= sys.stdin.readline()
test.strip('\n')
print(os.path.exists(test))

Я знаю, что os.path.exists может вернуть false, если есть ошибка прав доступа, но каталоги, на которые я ссылаюсь, не имеют ограничений.Иногда в моих путях есть пробелы.Я пытаюсь передать путь как '/ this \ is / my / path', так и '/ this / / my / path с одинаковыми результатами.

Ответы [ 3 ]

6 голосов
/ 17 октября 2010

Вы должны сделать

test = test.strip("\n")

Строки являются неизменяемыми, поэтому strip() возвращает новую строку.

( По крайней мере, ваш код работает для меня тогда, если он все еще не работает для вас, это должно быть что-то еще. )

1 голос
/ 17 октября 2010

strip() не изменяет строку, она возвращает новую строку.Попробуйте это:

import os
import sys
sys.stdout.write("Test directory: ")
test = sys.stdin.readline().strip('\n')
sys.stdout.write(str(os.path.exists(test)) + "\n")

(я использую sys.stdout.write() вместо print() для агностики Python-3.)

0 голосов
/ 17 октября 2010

то, что вам нужно сделать, это либо:

test = test.strip('\n')

или

print(os.path.exists(test.strip('\n'))

для того, что они сказали выше, strip () возвращает новую строку, чтобы тестесть новая строка, которую вы должны переназначить ей.(или во втором случае используйте новую строку прямо в path.exists ())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...