python os 路径与文件名_无论os / path格式是什么,都可以从路径中提取文件名

使用os.path.split或os.path.basename作为其他人建议不会在所有情况下都有效:如果您在Linux上运行脚本并尝试处理经典的Windows样式路径,它将失败。

Windows路径可以使用反斜杠或正斜杠作为路径分隔符。因此,ntpath模块(在Windows上运行时相当于os.path)将适用于所有平台上的所有(1)路径。import ntpath

ntpath.basename("a/b/c")

当然,如果文件以斜杠结尾,则基本名称将为空,因此请创建自己的函数来处理它:def path_leaf(path):

head, tail = ntpath.split(path)

return tail or ntpath.basename(head)

验证:>>> paths = ['a/b/c/', 'a/b/c', '\\a\\b\\c', '\\a\\b\\c\\', 'a\\b\\c', ...     'a/b/../../a/b/c/', 'a/b/../../a/b/c']>>> [path_leaf(path) for path in paths]['c', 'c', 'c', 'c', 'c', 'c', 'c']

(1)有一点需要注意:Linux文件名可能包含反斜杠。所以在linux上,r'a/b\c'总是指文件夹b\c中的a文件,而在Windows上,它总是引用c文件b夹子文件夹中的a文件。因此,当在路径中使用向前和向后斜杠时,您需要知道相关平台才能正确解释它。在实践中,通常可以安全地假设它是一个Windows路径,因为反斜杠在Linux文件名中很少使用,但在编码时请记住这一点,这样就不会产生意外的安全漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值