উত্তর:
ধরে m
নেওয়া একটি স্ট্রিং, আপনি এটি ব্যবহার করতে পারেন endswith
:
if m.endswith('.mp3'):
...
elif m.endswith('.flac'):
...
কেস-সংবেদনশীল হতে এবং সম্ভাব্য বৃহত্তর অন্য যদি-তবে শৃঙ্খলা দূর করতে:
m.lower().endswith(('.png', '.jpg', '.jpeg'))
.split('.')[-1]
করবেন না ? বা rpartition আসলেই উচ্চ দক্ষতা হয়?
os.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 একটি এমপি 3! ফোল্ডার 1 / ফোল্ডার / সাউন্ডফিল.ফ্ল্যাক একটি ফ্ল্যাক ফাইল!
/.mp3
কোনও এমপি 3 ফাইল হিসাবে বিবেচিত হয় না। কোনও অগ্রণী স্থানটিকে এইভাবে আচরণ করা উচিত। যেমন .gitignore
একটি ফাইল ফর্ম্যাট সঠিক নয়
মডিউল fnmatch দেখুন। এটি আপনি যা করতে চাইছেন তা করবে।
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.txt'):
print file
একটি সহজ উপায় হতে পারে:
import os
if os.path.splitext(file)[1] == ".mp3":
# do something
os.path.splitext(file)
দুটি মান (একটি এক্সটেনশন ছাড়াই ফাইলের নাম + কেবল এক্সটেনশন) সহ একটি টুপল ফিরিয়ে দেবে। দ্বিতীয় সূচক ([1]) এর ফলে আপনাকে কেবল এক্সটেনশন দেবে। দুর্দান্ত জিনিস হ'ল, এইভাবে আপনি প্রয়োজন মতো ফাইলের নামটিও খুব সহজেই অ্যাক্সেস করতে পারবেন!
একটি পুরানো থ্রেড, তবে ভবিষ্যতের পাঠকদের সহায়তা করতে পারে ...
আপনার কোডটিকে আরও প্ল্যাটফর্মটি স্বতন্ত্র করে তোলা ছাড়া অন্য কোনও কারণ না হলে আমি ফাইলনামে .looer () ব্যবহার করা এড়াতে চাই । (লিনাক্সের হয় কেস sensistive, .lower () একটি ফাইল হবে নিশ্চয় দুর্নীতিগ্রস্ত আপনার যুক্তিবিজ্ঞান অবশেষে ... অথবা তার থেকেও খারাপ, একটি গুরুত্বপূর্ণ ফাইলের উপর!)
কেন রি ব্যবহার করবেন না ? (যদিও আরও শক্তিশালী হওয়া উচিত, আপনার প্রতিটি ফাইলের ম্যাজিক ফাইল শিরোনামটি পরীক্ষা করা উচিত ... পাইথনে এক্সটেনশন ছাড়াই কীভাবে ফাইলগুলি পরীক্ষা করতে হবে? )
import re
def checkext(fname):
if re.search('\.mp3$',fname,flags=re.IGNORECASE):
return('mp3')
if re.search('\.flac$',fname,flags=re.IGNORECASE):
return('flac')
return('skip')
flist = ['myfile.mp3', 'myfile.MP3','myfile.mP3','myfile.mp4','myfile.flack','myfile.FLAC',
'myfile.Mov','myfile.fLaC']
for f in flist:
print "{} ==> {}".format(f,checkext(f))
আউটপুট:
myfile.mp3 ==> mp3
myfile.MP3 ==> mp3
myfile.mP3 ==> mp3
myfile.mp4 ==> skip
myfile.flack ==> skip
myfile.FLAC ==> flac
myfile.Mov ==> skip
myfile.fLaC ==> flac
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
if (file.split(".")[1] == "mp3"):
print "its mp3"
elif (file.split(".")[1] == "flac"):
print "its flac"
else:
print "not compat"
.
some.test.file.mp3
#!/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'
file='test.xlsx'
if file.endswith('.csv'):
print('file is CSV')
elif file.endswith('.xlsx'):
print('file is excel')
else:
print('none of them')