Python path.exists和path.join

时间:2016-03-18 03:08:02

标签: python python-2.7 join path

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我很陌生没有看到任何空白。

2 个答案:

答案 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重用。