我在一个特定的程序上工作,我需要根据文件的扩展名做不同的事情。我能用这个吗?
if m == *.mp3
...
elif m == *.flac
...
我在一个特定的程序上工作,我需要根据文件的扩展名做不同的事情。我能用这个吗?
if m == *.mp3
...
elif m == *.flac
...
当前回答
查看模块fnmatch。它会达到你想要的效果。
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.txt'):
print file
其他回答
如果你的文件上传了
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
操作系统。Path提供了许多操作路径/文件名的函数。(文档)
Os.path.splitext接受一个路径,并将文件扩展名从路径的末尾分离出来。
import os
filepaths = ["/folder/soundfile.mp3", "folder1/folder/soundfile.flac"]
for fp in filepaths:
# Split the extension from the path and normalise it to lowercase.
ext = os.path.splitext(fp)[-1].lower()
# Now we can simply use == to check for equality, no need for wildcards.
if ext == ".mp3":
print fp, "is an mp3!"
elif ext == ".flac":
print fp, "is a flac file!"
else:
print fp, "is an unknown file format."
给:
/folder/soundfile.mp3 is an mp3! folder1/folder/soundfile.flac is a flac file!
file='test.xlsx'
if file.endswith('.csv'):
print('file is CSV')
elif file.endswith('.xlsx'):
print('file is excel')
else:
print('none of them')
在检查扩展名之前,您应该确保“文件”实际上不是一个文件夹。上面的一些答案没有说明带句点的文件夹名称。(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']