繁体   English   中英

在Python中获取目录的基本名称的优雅方法?

[英]Elegant way to take basename of directory in Python?

我有几个脚本将目录名作为输入,我的程序在这些目录中创建文件。 有时我想获取给程序的目录的基本名称,并使用它在目录中创建各种文件。 例如,

# directory name given by user via command-line
output_dir = "..." # obtained by OptParser, for example
my_filename = output_dir + '/' + os.path.basename(output_dir) + '.my_program_output'
# write stuff to my_filename

问题是如果用户给出带有斜杠的目录名,那么os.path.basename将返回空字符串,这不是我想要的。 在python中处理这些斜杠/尾部斜杠问题最优雅的方法是什么? 我知道我可以手动检查output_dir末尾的斜杠并删除它,如果它在那里,但似乎应该有更好的方法。 在那儿?

此外,手动添加“/”字符是否可以? 例如output_dir +'/'os.path.basename()还是有更通用的方法来构建路径?

谢谢。

要处理“尾随斜杠”问题(以及其他问题!),请使用os.path.normpath()清理用户输入。

要构建路径,请使用os.path.join()

使用os.path.join()来构建路径。 例如:

>>> import os.path
>>> path = 'foo/bar'
>>> os.path.join(path, 'filename')
'foo/bar/filename'
>>> path = 'foo/bar/'
>>> os.path.join(path, 'filename')
'foo/bar/filename'

您应该使用os.path.join()将路径一起添加。

采用

os.path.dirname(os.path.join(output_dir,''))

提取dirname,如果省略则添加尾部斜杠。

手动构建路径对于可移植性来说是一个坏主意; 它将在Windows上破解。 你应该使用os.path.sep。

至于你的第一个问题,使用os.path.join是正确的想法。

要在不写斜杠的情况下构建路径,最好使用:

os.path.join(dir, subdir, file)

如果你想添加分隔符或获得与os独立的分隔符,那么使用

 os.sep

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM