我在一个特定的程序上工作,我需要根据文件的扩展名做不同的事情。我能用这个吗?

if m == *.mp3
   ...
elif m == *.flac
   ...

当前回答

一个简单的方法是:

import os

if os.path.splitext(file)[1] == ".mp3":
    # do something

Os.path.splitext (file)将返回一个包含两个值的元组(没有扩展名的文件名+只有扩展名的文件名)。因此,第二个索引([1])只提供扩展名。最酷的是,如果需要的话,这样你也可以很容易地访问文件名!

其他回答

import os
source = ['test_sound.flac','ts.mp3']

for files in source:
   fileName,fileExtension = os.path.splitext(files)
   print fileExtension   # Print File Extensions
   print fileName   # It print file name

在检查扩展名之前,您应该确保“文件”实际上不是一个文件夹。上面的一些答案没有说明带句点的文件夹名称。(folder.mp3是一个有效的文件夹名)。


检查文件扩展名:

import os

file_path = "C:/folder/file.mp3"
if os.path.isfile(file_path):
    file_extension = os.path.splitext(file_path)[1]
    if file_extension.lower() == ".mp3":
        print("It's an mp3")
    if file_extension.lower() == ".flac":
        print("It's a flac")

输出:

It's an mp3

检查文件夹中所有文件的扩展名:

import os

directory = "C:/folder"
for file in os.listdir(directory):
    file_path = os.path.join(directory, file)
    if os.path.isfile(file_path):
        file_extension = os.path.splitext(file_path)[1]
        print(file, "ends in", file_extension)

输出:

abc.txt ends in .txt
file.mp3 ends in .mp3
song.flac ends in .flac

比较多种类型的文件扩展名:

import os

file_path = "C:/folder/file.mp3"
if os.path.isfile(file_path):
    file_extension = os.path.splitext(file_path)[1]
    if file_extension.lower() in {'.mp3', '.flac', '.ogg'}:
        print("It's a music file")
    elif file_extension.lower() in {'.jpg', '.jpeg', '.png'}:
        print("It's an image file")

输出:

It's a music file

我很惊讶没有一个答案建议使用pathlib库。

当然,它的使用是视情况而定的,但当涉及到文件处理或统计pathlib是黄金。

下面是一个片段:


import pathlib


def get_parts(p: str or pathlib.Path) -> None:
    p_ = pathlib.Path(p).expanduser().resolve()
    print(p_)
    print(f"file name: {p_.name}")
    print(f"file extension: {p_.suffix}")
    print(f"file extensions: {p_.suffixes}\n")


if __name__ == '__main__':
    file_path = 'conf/conf.yml'
    arch_file_path = 'export/lib.tar.gz'

    get_parts(p=file_path)
    get_parts(p=arch_file_path)

输出:

/Users/hamster/temp/src/pro1/conf/conf.yml
file name: conf.yml
file extension: .yml
file extensions: ['.yml']

/Users/hamster/temp/src/pro1/conf/lib.tar.gz
file name: lib.tar.gz
file extension: .gz
file extensions: ['.tar', '.gz']

如果你的文件上传了

import os


file= request.FILES['your_file_name']          #Your input file_name for your_file_name
ext = os.path.splitext(file.name)[-1].lower()


if ext=='.mp3':
    #do something

elif ext=='.xls' or '.xlsx' or '.csv':
    #do something

else:
    #The uploaded file is not the required format
#!/usr/bin/python

import shutil, os

source = ['test_sound.flac','ts.mp3']

for files in source:
  fileName,fileExtension = os.path.splitext(files)

  if fileExtension==".flac" :
    print 'This file is flac file %s' %files
  elif  fileExtension==".mp3":
    print 'This file is mp3 file %s' %files
  else:
    print 'Format is not valid'