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

1 投票
3 回答
1098 浏览
提问于 2025-04-16 05:38

每当我调用 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() 会返回一个新的字符串

(至少你的代码在我这儿是能运行的,如果在你那儿还是不行,那可能是其他地方出了问题。)

撰写回答