2015-07-10 74 views
1

我有一个像下面这样的代码片段。如何理解下面的'os.path.join'python命令?

out_dir = os.path.join(dir, "myfile-{0}".format(os.environ['JOB_ID'])) 

我知道os.path.join用于智能地连接一个或多个路径组件。那么这是否意味着“myfile- {0}”。格式(os.environ ['JOB_ID'])也是一个路径组件?为什么会这样?非常感谢您的时间和关注。

+2

这只是一个字符串。查找['str.format()'](https://docs.python.org/3/library/stdtypes.html#str.format)。 – TigerhawkT3

+3

''myfile- {0}“.format(x)'在概念上与'”myfile-“+ str(x)'相同。 – rlbond

回答

1

我们来分析一下你的问题:

out_dir = os.path.join(dir, "myfile-{0}".format(os.environ['JOB_ID'])) 

你已经知道的是:out_dir是一个变量名,os.path.join是创建了两个(或更多)字符串的目录路径的方法。 你不完全确定的是该方法的参数:dir是之前声明的一些变量对你来说也很清楚,但表达式"myfile-{0}".format(os.environ['JOB_ID'])对你来说没有什么困惑。 myfile-{0}"是一个字符串,而且一个可以调用字符串上的方法format,大括号{0}中的零被替换为第一个参数,如果有{1}它将被替换为第二个参数。插入os.environ['JOB_ID']的返回值代替{0}

假设返回值为1,所以这会产生字符串"myfile-1"。假设dir的值是"/path/to/the/directory"。然后变量out_dir被分配值"/path/to/the/directory/myfile-1"。请注意斜杠/os.path.join创建文件路径来维护目录分隔符。

这意味着"myfile-{0}".format(os.environ['JOB_ID'])也是一个路径组件。

+0

我知道你已经回答了这个问题。但不知何故,我得到了以下错误:out_dir = os.path.join(dir,“myfile- {0}”.format(os.environ ['JOB_ID'])) 文件“/apps/x86_64/python/2.7。 6/lib/python2.7/UserDict.py“,第23行,在__getitem__ 引发KeyError(key) KeyError:'JOB_ID' 您碰巧知道为什么? – ntough

+0

'os.environ ['JOB_ID']'试图获取环境变量JOB_ID。它必须在python脚本运行之前声明。您可以在bash中运行命令'env'并查看JOB_ID是否存在。 – cezar