如何从Python中的路径获取没有扩展名的文件名?
获取没有扩展名的文件名称:
import os print(os.path.splitext("/path/to/some/file.txt")[0])
滚动吧:
>>> import os >>> base=os.path.basename('/root/dir/sub/file.ext') >>> base 'file.ext' >>> os.path.splitext(base) ('file', '.ext') >>> os.path.splitext(base)[0] 'file'
>>> print(os.path.splitext(os.path.basename("hemanth.txt"))[0]) hemanth
可读版本,pathlib
在Python 3.4+中使用
from pathlib import Path Path('/root/dir/sub/file.ext').stem
将打印:
文件
如果路径可以是符号链接,则添加pathlib
file
为了完整起见,这里是pathlib
python 3.2+ 的解决方案:
from pathlib import Path print(Path(your_path).resolve().stem)
如果要保留文件的路径,只需删除扩展名
>>> file = '/root/dir/sub.exten/file.data.1.2.dat' >>> print ('.').join(file.split('.')[:-1]) /root/dir/sub.exten/file.data.1.2
https://docs.python.org/3/library/os.path.html
在python 3中,pathlib"pathlib模块提供了高级路径对象." 所以,
>>> from pathlib import Path >>> p = Path("/a/b/c.txt") >>> print(p.with_suffix('')) \a\b\c >>> print(p.stem) c
如果扩展中有多个点,则os.path.splitext()将不起作用.
例如,images.tar.gz
>>> import os >>> file_path = '/home/dc/images.tar.gz' >>> file_name = os.path.basename(file_path) >>> print os.path.splitext(file_name)[0] images.tar
您可以在基本名称中找到第一个点的索引,然后将基本名称切片以仅获取没有扩展名的文件名.
>>> import os >>> file_path = '/home/dc/images.tar.gz' >>> file_name = os.path.basename(file_path) >>> index_of_dot = file_name.index('.') >>> file_name_without_extension = file_name[:index_of_dot] >>> print file_name_without_extension images
@ IceAdor在评论@ user2902201的解决方案中引用了rsplit.rsplit是支持多个句点的最简单的解决方案.
这里拼写出来:
file = 'my.report.txt' print file.rsplit('.', 1)[0]
我的报告
但即使我导入操作系统,我也无法将其命名为path.basename.是否可以直接将其称为基本名称?
import os
,然后使用 os.path.basename
import
ing os
并不意味着你可以在os.foo
不参考的情况下使用os
.
我以为我会在os.path.splitext中使用一个变体,而不需要使用数组索引.
该函数始终返回一(root, ext)
对,因此可以安全使用:
root, ext = os.path.splitext(path)
例:
>>> import os >>> path = 'my_text_file.txt' >>> root, ext = os.path.splitext(path) >>> root 'my_text_file' >>> ext '.txt'