Python 2.7: 用path.exists苦苦挣扎
import os
import platform
OS = platform.system()
CPU_ARCH = platform.machine()
if os.path.exists( os.path.join("/dir/to/place/" , CPU_ARCH) ):
print "WORKED"
# Linux
LD_LIBRARY_PATH = "/dir/to/place/" + CPU_ARCH
TRANSCODER_DIR = LD_LIBRARY_PATH + "/Resources/"
else:
print "FAILED"
#fail back to original director if processor not recognised
TRANSCODER_DIR = "/dir/to/place/Resources/"
LD_LIBRARY_PATH = "/dir/to/place"
只要我在os.path.join中加上一个变量,if语句就会失败。
os.path.exists("/dir/to/place/arch")
返回TRUE
os.path.exists("/dir/to/place/" + CPU_ARCH)
返回FALSE
我在不同的路径命令和字符串命令上尝试过很多变化,但是没有一个能让我用变量来改变它。
os.path.join("/dir/to/place/", CPU_ARCH)
返回/ dir / to / place / arch
它不是权限问题,要么已授予完整权限,而且我已经使用python cli测试了它仍然存在同样的问题。
我已经查看了同一个问题的所有堆叠帖子,我见过的唯一一个有人说过工作的响应就是剥离空白区域,我对python我很陌生没有看到任何空白。
答案 0 :(得分:1)
os.path.exists
检查路径是否存在。
如果/dir/to/place/arch
存在,那么
os.path.exists("/dir/to/place/" + CPU_ARCH)
应该返回True。 请注意示例
中缺少的尾随/place
os.path.join
将加入其所有参数以创建路径。
# This joins the two arguments into one path
os.path.join("/dir/to/place/", CPU_ARCH)
# >>> '/dir/to/place/x86_64'
解释你的结果。
答案 1 :(得分:0)
如果/dir/to/place/arch
存在,我建议将arch设置为CPU_ARCH = platform.machine().strip()
,因为字符串末尾可能有空格导致其失败。并且可能将其设置为变量以供LD_LIBRARY_PATH = var
重用。