如何从Python中的路径获取不带扩展名的文件名?
"/path/to/some/file.txt" → "file"
如何从Python中的路径获取不带扩展名的文件名?
"/path/to/some/file.txt" → "file"
当前回答
import os
filename, file_extension =os.path.splitext(os.path.basename('/d1/d2/example.cs'))
文件名为“example”文件扩展名为“.cs”
'
其他回答
解决此问题的最简单方法是
import ntpath
print('Base name is ',ntpath.basename('/path/to/the/file/'))
这节省了时间和计算成本。
# use pathlib. the below works with compound filetypes and normal ones
source_file = 'spaces.tar.gz.zip.rar.7z'
source_path = pathlib.Path(source_file)
source_path.name.replace(''.join(source_path.suffixes), '')
>>> 'spaces'
尽管上面描述了许多工作实现,我还是添加了这个^,因为它只使用pathlib,并且适用于复合文件类型和普通文件类型
以下情况如何?
import pathlib
filename = '/path/to/dir/stem.ext.tar.gz'
pathlib.Path(filename).name[:-len(''.join(pathlib.Path(filename).suffixes))]
# -> 'stem'
或者这个等价物?
pathlib.Path(filename).name[:-sum(map(len, pathlib.Path(filename).suffixes))]
>>> print(os.path.splitext(os.path.basename("/path/to/file/hemanth.txt"))[0])
hemanth
我没有仔细看,但我没有看到任何人使用正则表达式解决这个问题。
我将问题解释为“给定路径,返回不带扩展名的基名称。”
e.g.
“path/to/file.json”=>“文件”
“path/to/my.file.json”=>“my.file”
在Python 2.7中,我们仍然没有pathlib。。。
def get_file_name_prefix(file_path):
basename = os.path.basename(file_path)
file_name_prefix_match = re.compile(r"^(?P<file_name_pre fix>.*)\..*$").match(basename)
if file_name_prefix_match is None:
return file_name
else:
return file_name_prefix_match.group("file_name_prefix")
get_file_name_prefix("path/to/file.json")
>> file
get_file_name_prefix("path/to/my.file.json")
>> my.file
get_file_name_prefix("path/to/no_extension")
>> no_extension