[英]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'
手动构建路径对于可移植性来说是一个坏主意; 它将在Windows上破解。 你应该使用os.path.sep。
至于你的第一个问题,使用os.path.join是正确的想法。
要在不写斜杠的情况下构建路径,最好使用:
os.path.join(dir, subdir, file)
如果你想添加分隔符或获得与os独立的分隔符,那么使用
os.sep
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.