是否有从文件名中提取扩展名的功能?


当前回答

这是在一行中同时获取文件名和扩展名的最简单方法。

fName, ext = 'C:/folder name/Flower.jpeg'.split('/')[-1].split('.')

>>> print(fName)
Flower
>>> print(ext)
jpeg

与其他解决方案不同,您不需要为此导入任何包。

其他回答

只需加入所有pathlib后缀。

>>> x = 'file/path/archive.tar.gz'
>>> y = 'file/path/text.txt'
>>> ''.join(pathlib.Path(x).suffixes)
'.tar.gz'
>>> ''.join(pathlib.Path(y).suffixes)
'.txt'

上面的任何解决方案都有效,但在linux上,我发现扩展字符串末尾有一个换行符,这将阻止匹配成功。将strip()方法添加到末尾。例如:

import os.path
extension = os.path.splitext(filename)[1][1:].strip() 

为了好玩。。。只需收集dict中的扩展,并在文件夹中跟踪所有扩展。然后,只要拉动你想要的延伸部分。

import os

search = {}

for f in os.listdir(os.getcwd()):
    fn, fe = os.path.splitext(f)
    try:
        search[fe].append(f)
    except:
        search[fe]=[f,]

extensions = ('.png','.jpg')
for ex in extensions:
    found = search.get(ex,'')
    if found:
        print(found)

这是一种直接的字符串表示技术:我看到提到了很多解决方案,但我认为大多数都在考虑拆分。然而,每次出现“.”时,Split都会执行此操作。您更希望查找的是分区。

string = "folder/to_path/filename.ext"
extension = string.rpartition(".")[-1]

您可以使用endswith来识别python中的文件扩展名

如以下示例

for file in os.listdir():
    if file.endswith('.csv'):
        df1 =pd.read_csv(file)
        frames.append(df1)
        result = pd.concat(frames)