পাইথনের কোনও পথ থেকে এক্সটেনশন ছাড়াই কীভাবে ফাইলের নাম পাবেন?
পাইথনের কোনও পথ থেকে এক্সটেনশন ছাড়াই কীভাবে ফাইলের নাম পাবেন?
উত্তর:
এক্সটেনশন ছাড়াই ফাইলটির নাম পাওয়া:
import os
print(os.path.splitext("/path/to/some/file.txt")[0])
ছাপে:
/path/to/some/file
জন্য ডকুমেন্টেশনos.path.splitext ।
গুরুত্বপূর্ণ দ্রষ্টব্য: যদি ফাইলের নামের একাধিক বিন্দু থাকে তবে কেবল সর্বশেষটি সরানোর পরে এক্সটেনশনটি। উদাহরণ স্বরূপ:
import os
print(os.path.splitext("/path/to/some/file.txt.zip.asc")[0])
ছাপে:
/path/to/some/file.txt.zip
আপনার যদি এই কেসটি পরিচালনা করতে হয় তবে নীচের অন্যান্য উত্তরগুলি দেখুন।
splitext('kitty.jpg.zip')দেয় ('kitty.jpg', '.zip'))।
splitext(basename('/some/path/to/file.txt'))[0](যা আমি সবসময় করবো বলে মনে হয়)
আপনি এটি দিয়ে নিজের তৈরি করতে পারেন:
>>> import os
>>> base=os.path.basename('/root/dir/sub/file.ext')
>>> base
'file.ext'
>>> os.path.splitext(base)
('file', '.ext')
>>> os.path.splitext(base)[0]
'file'
গুরুত্বপূর্ণ দ্রষ্টব্য: .ফাইলের নামের মধ্যে যদি একাধিক লোক থাকে তবে কেবলমাত্র সর্বশেষটি সরিয়ে ফেলা হবে। উদাহরণ স্বরূপ:
/root/dir/sub/file.ext.zip -> file.ext
/root/dir/sub/file.ext.tar.gz -> file.ext.tar
এই ঠিকানাটির অন্য উত্তরগুলির জন্য নীচে দেখুন।
osনা।
pathlibপাইথন ৩.৪++ এ ব্যবহার করা হচ্ছে
from pathlib import Path
Path('/root/dir/sub/file.ext').stem
ফিরে আসবে
'file'
os.pathসমাধানগুলির মতো , এটি কেবলমাত্র একটি এক্সটেনশান (বা suffix, যেমন pathlibএটি কল করবে) কেড়ে নেবে। Path('a.b.c').stem == 'a.b'
Path(Path('a.b.c').stem).stem
.with_suffix('')উপায়। আপনি সম্ভবত অবধি লুপ করতে চাইবেন p.suffix == ''।
>>> print(os.path.splitext(os.path.basename("hemanth.txt"))[0])
hemanth
`কোডটি প্রদর্শনের জন্য এবং "/somepath/hermanth.txt" কে একটি পথের উদাহরণ হিসাবে ব্যবহার করতে পারেন ।
os.path.basenameএটি প্রয়োজনীয় নয়। os.path.basenameকেবলমাত্র ফাইলের পাথ থেকে ফাইলের নাম পেতে ব্যবহার করা উচিত।
https://docs.python.org/3/library/os.path.html
পাইথন 3 পাথলিবিতে "প্যাথলিব মডিউলটি উচ্চ-স্তরের পাথ অবজেক্টগুলি সরবরাহ করে।" তাই হয়,
>>> from pathlib import Path
>>> p = Path("/a/b/c.txt")
>>> print(p.with_suffix(''))
\a\b\c
>>> print(p.stem)
c
আপনি যদি ফাইলটির পথ ধরে রাখতে চান এবং কেবল এক্সটেনশানটি সরাতে পারেন
>>> file = '/root/dir/sub.exten/file.data.1.2.dat'
>>> print ('.').join(file.split('.')[:-1])
/root/dir/sub.exten/file.data.1.2
'/root/dir/sub.exten/file.data.1.2.dat'.rsplit('.', 1)
os.path.splitext () এক্সটেনশনে একাধিক বিন্দু থাকলে কাজ করবে না ।
উদাহরণস্বরূপ, images.tar.gz
>>> import os
>>> file_path = '/home/dc/images.tar.gz'
>>> file_name = os.path.basename(file_path)
>>> print os.path.splitext(file_name)[0]
images.tar
আপনি কেবল বেসনেমে প্রথম বিন্দুর সূচকটি খুঁজে পেতে পারেন এবং তারপরে কোনও এক্সটেনশন ছাড়াই কেবল ফাইলের নাম পেতে বেস নামটি স্লাইস করতে পারেন।
>>> import os
>>> file_path = '/home/dc/images.tar.gz'
>>> file_name = os.path.basename(file_path)
>>> index_of_dot = file_name.index('.')
>>> file_name_without_extension = file_name[:index_of_dot]
>>> print file_name_without_extension
images
'haystack'.index('needle')সুই (উপরের ক্ষেত্রে বিন্দু, .) খড়খড়ের সন্ধান না পাওয়া সেক্ষেত্রে একটি ValueError ব্যতিক্রম ছোঁড়ে । কোনও এক্সটেনশন ছাড়াই ফাইলগুলিও বিদ্যমান।
তবে আমি যখন ওএস আমদানি করি তখনও আমি এটিকে path.basename বলতে পারছি না। এটি সরাসরি বেসনাম হিসাবে কল করা সম্ভব?
import os, এবং তারপরে ব্যবহার করুন os.path.basename
importআইং এর osঅর্থ এই নয় যে আপনি os.fooউল্লেখ ছাড়াই ব্যবহার করতে পারবেন os।
from os import foo।
osমডিউলটির একটি সদস্য থাকলে এটির একটি খুব অ-মানক সংস্করণ রয়েছে foo।
path, বা walk)।
ভেবেছিলাম আমি os.path.splitext এর ব্যবহারের বিভিন্নতা আনব অ্যারে ইনডেক্সিং ব্যবহার না করেই আমি ।
ফাংশনটি সর্বদা একটি (root, ext)জুড়ি ফেরত দেয় যাতে এটি ব্যবহার করা নিরাপদ:
root, ext = os.path.splitext(path)
উদাহরণ:
>>> import os
>>> path = 'my_text_file.txt'
>>> root, ext = os.path.splitext(path)
>>> root
'my_text_file'
>>> ext
'.txt'
অন্যান্য পদ্ধতিগুলি একাধিক এক্সটেনশন সরিয়ে দেয় না। কারও কারও এক্সটেনশন নেই এমন ফাইলের নাম নিয়ে সমস্যা রয়েছে। এই স্নিপেটটি উভয় দৃষ্টান্ত নিয়ে কাজ করে এবং পাইথন 2 এবং 3 উভয় ক্ষেত্রেই এটি কাজ করে bs
import os
def get_filename_without_extension(file_path):
file_basename = os.path.basename(file_path)
filename_without_extension = file_basename.split('.')[0]
return filename_without_extension
এখানে চালানোর জন্য কয়েকটি উদাহরণ রয়েছে:
example_paths = [
"FileName",
"./FileName",
"../../FileName",
"FileName.txt",
"./FileName.txt.zip.asc",
"/path/to/some/FileName",
"/path/to/some/FileName.txt",
"/path/to/some/FileName.txt.zip.asc"
]
for example_path in example_paths:
print(get_filename_without_extension(example_path))
প্রতিটি ক্ষেত্রে, মুদ্রিত মানটি হ'ল:
FileName
Path('/path/to/file.txt').stem। (1,23μs বনাম 8.39μs)
import os
filename = C:\\Users\\Public\\Videos\\Sample Videos\\wildlife.wmv
এটি (সি: \ ব্যবহারকারীগণ \ সর্বজনীন \ ভিডিওগুলি ample নমুনা ভিডিওগুলি \ বন্যজীবন) filenameব্যতীত ফেরৎ দেয়extension
temp = os.path.splitext(filename)[0]
এখন আপনি filenameটেম্পের সাথে ঠিক এটি পেতে পারেন
os.path.basename(temp) #this returns just the filename (wildlife)
একাধিক এক্সটেনশন সচেতন পদ্ধতি। জন্য strএবং unicodeপাথ কাজ করে। পাইথন 2 এবং 3 এ কাজ করে।
import os
def file_base_name(file_name):
if '.' in file_name:
separator_index = file_name.index('.')
base_name = file_name[:separator_index]
return base_name
else:
return file_name
def path_base_name(path):
file_name = os.path.basename(path)
return file_base_name(file_name)
আচরণ:
>>> path_base_name('file')
'file'
>>> path_base_name(u'file')
u'file'
>>> path_base_name('file.txt')
'file'
>>> path_base_name(u'file.txt')
u'file'
>>> path_base_name('file.tar.gz')
'file'
>>> path_base_name('file.a.b.c.d.e.f.g')
'file'
>>> path_base_name('relative/path/file.ext')
'file'
>>> path_base_name('/absolute/path/file.ext')
'file'
>>> path_base_name('Relative\\Windows\\Path\\file.txt')
'file'
>>> path_base_name('C:\\Absolute\\Windows\\Path\\file.txt')
'file'
>>> path_base_name('/path with spaces/file.ext')
'file'
>>> path_base_name('C:\\Windows Path With Spaces\\file.txt')
'file'
>>> path_base_name('some/path/file name with spaces.tar.gz.zip.rar.7z')
'file name with spaces'
import os
path = "a/b/c/abc.txt"
print os.path.splitext(os.path.basename(path))[0]
সুবিধার জন্য, দুটি পদ্ধতি মোড়ানো একটি সাধারণ ফাংশন os.path:
def filename(path):
"""Return file name without extension from path.
See https://docs.python.org/3/library/os.path.html
"""
import os.path
b = os.path.split(path)[1] # path, *filename*
f = os.path.splitext(b)[0] # *file*, ext
#print(path, b, f)
return f
পাইথন ৩.৫ নিয়ে পরীক্ষা করা হয়েছে।
এটি সমাধানের সবচেয়ে সহজ উপায় হ'ল
import ntpath
print('Base name is ',ntpath.basename('/path/to/the/file/'))
এটি আপনার সময় এবং গণনার ব্যয় সাশ্রয় করে।
খুব খুব খুব সহজভাবে অন্য কোনও মডিউল নেই !!!
import os
p = r"C:\Users\bilal\Documents\face Recognition python\imgs\northon.jpg"
# Get the filename only from the initial file path.
filename = os.path.basename(p)
# Use splitext() to get filename and extension separately.
(file, ext) = os.path.splitext(filename)
# Print outcome.
print("Filename without extension =", file)
print("Extension =", ext)
ফাইল নামটি (উইন্ডোজ এবং পসিএক্স পার্থক্যকে সম্মান করে) এক্সট্র্যাক্ট করতে আমরা এখানে কিছু https://stackoverflow.com/a/424006/1250044 হিসাবে দেখা হিসাবে কিছু সাধারণ split/ popযাদু করতে পারি ।
def getFileNameWithoutExtension(path):
return path.split('\\').pop().split('/').pop().rsplit('.', 1)[0]
getFileNameWithoutExtension('/path/to/file-0.0.1.ext')
# => file-0.0.1
getFileNameWithoutExtension('\\path\\to\\file-0.0.1.ext')
# => file-0.0.1
import os
list = []
def getFileName( path ):
for file in os.listdir(path):
#print file
try:
base=os.path.basename(file)
splitbase=os.path.splitext(base)
ext = os.path.splitext(base)[1]
if(ext):
list.append(base)
else:
newpath = path+"/"+file
#print path
getFileName(newpath)
except:
pass
return list
getFileName("/home/weexcel-java3/Desktop/backup")
print list
ওএস ফাইলনামটি আমদানি করুন, ফাইল_একটি এক্সটেনশন = os.path.splitext ('/ d1 / d2 / example.cs') ফাইলের নাম '/ d1 / d2 / উদাহরণ' ফাইল_ এক্সটেনশন '.cs'