我有以下字符串:
a = "/home/user/Downloads/repo/test.txt"
我的目标只是创建一个仅包含test
的字符串,我可以这样做吗?
实际上是来自
f = tkFileDialog.asksaveasfile(mode='w', defaultextension=".txt")
和a等于a = f.name
但我意识到f.name
并没有给我这个文件的名称。
答案 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