os.path.exists不接受变量输入

时间:2010-10-17 17:29:19

标签: python string immutability

每当我调用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 \是/ my / path'和'/ this is / my / path具有相同的结果。

3 个答案:

答案 0 :(得分:6)

你必须做

test = test.strip("\n")

字符串是不可变的,因此strip() 返回一个新字符串。

至少你的代码适用于我,如果它仍然不适合你,它必须是别的。

答案 1 :(得分:1)

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不可知性。)

答案 2 :(得分:0)

你需要做的是:

test = test.strip('\n')

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

对于他们上面所说的内容,strip()返回一个新字符串,因此为了让测试具有新字符串,您必须将其重新分配给它。 (或者在第二种情况下直接在path.exists()中使用新字符串)