os.path.exists不接受变量输入
每当我调用 os.path.exists(variable) 时,它总是返回 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 is/my/path' 这两种方式传递路径,但结果都是一样的。
3 个回答
0
你需要做的事情是:
test = test.strip('\n')
或者
print(os.path.exists(test.strip('\n'))
根据他们上面说的,strip()这个函数会返回一个新的字符串,所以如果你想让test变量得到这个新的字符串,你必须把它重新赋值给test。(或者在第二种情况下,直接把这个新字符串用在path.exists()里)
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。)
6
你需要做的是
test = test.strip("\n")
字符串是不可变的,所以 strip()
会返回一个新的字符串。
(至少你的代码在我这儿是能运行的,如果在你那儿还是不行,那可能是其他地方出了问题。)