在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(),还是说有更通用的方法来构建路径?
谢谢。
6 个回答
2
你应该使用 os.path.join() 来把路径合并在一起。
使用
os.path.dirname(os.path.join(output_dir,''))
可以提取出目录名,如果末尾没有斜杠的话,还会自动加上一个斜杠。
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'
29
为了处理你提到的“结尾斜杠”问题(还有其他问题!),可以用 os.path.normpath()
来清理用户输入。
在构建路径的时候,使用 os.path.join()
。