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


当前回答

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

如以下示例

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

其他回答

我知道我迟到了

这是我的简单解决方案

file = '/foo/bar/whatever.ext'
extension = file.split('.')[-1]
print(extension)

#output will be ext

只需加入所有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'

虽然这是一个古老的话题,但我想知道为什么在本例中没有提到一个非常简单的python api rpartition:

要获取给定文件绝对路径的扩展名,只需键入:

filepath.rpartition('.')[-1]

例子:

path = '/home/jersey/remote/data/test.csv'
print path.rpartition('.')[-1]

将给您:“csv”

def NewFileName(fichier):
    cpt = 0
    fic , *ext =  fichier.split('.')
    ext = '.'.join(ext)
    while os.path.isfile(fichier):
        cpt += 1
        fichier = '{0}-({1}).{2}'.format(fic, cpt, ext)
    return fichier

另一种右拆分解决方案:

# to get extension only

s = 'test.ext'

if '.' in s: ext = s.rsplit('.', 1)[1]

# or, to get file name and extension

def split_filepath(s):
    """
    get filename and extension from filepath 
    filepath -> (filename, extension)
    """
    if not '.' in s: return (s, '')
    r = s.rsplit('.', 1)
    return (r[0], r[1])