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

12 python filesystems file-io directory-structure

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

# 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
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Joh*_*hin 19

要处理您的"尾随斜线"问题(以及其他问题!),请使用清理用户输入os.path.normpath().

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


Jef*_*rry 7

使用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'
Run Code Online (Sandbox Code Playgroud)