如何只使用python获取路径的名称?

时间:2018-06-15 13:42:21

标签: python

我有以下字符串:

a = "/home/user/Downloads/repo/test.txt"

我的目标只是创建一个仅包含test的字符串,我可以这样做吗?

实际上是来自

f = tkFileDialog.asksaveasfile(mode='w', defaultextension=".txt")

和a等于a = f.name

但我意识到f.name并没有给我这个文件的名称。

3 个答案:

答案 0 :(得分:13)

在Python 3.4+中,您可以使用pathlib模块(包含在Python的标准库中):

from pathlib import Path
p = Path("/home/user/Downloads/repo/test.txt")
print(p.stem)

答案 1 :(得分:1)

使用os.path module处理路径; os.path.basename() function为您提供最后一个路径分隔符后的最后一部分,os.path.splitext()为您提供扩展名为split off的文件名:

import os.path

basename = os.path.splitext(os.path.basename(f.name))[0]

使用os.path函数可确保您的代码在不同的操作系统上继续正常工作,即使路径分隔符不同。

在Python 3.4或更新版本(或separate backport install)中,您还可以使用pathlib library,它提供了一种更面向对象的路径处理方法。 pathlib.Path()个对象有.stem attribute,这是没有扩展名后缀的最终组件:

try:
    import pathlib
except ImportError:
    # older Python version, import the backport instead
    import pathlib2 as pathlib

basename = pathlib.Path(f.name).stem

演示:

>>> import os.path
>>> a = "/home/user/Downloads/repo/test.txt"
>>> os.path.basename(a)
'test.txt'
>>> os.path.splitext(os.path.basename(a))
('test', '.txt')
>>> os.path.splitext(os.path.basename(a))[0]
'test'
>>> import pathlib
>>> pathlib.Path(a)
PosixPath('/home/user/Downloads/repo/test.txt')
>>> pathlib.Path(a).stem
'test'

答案 2 :(得分:1)

您似乎正在寻找$html .= $Node->ownerDocument->saveHTML( $Node );os.path.basename

os.path.splitext