পাইথনের ফাইল পাথ থেকে আমি কীভাবে ফোল্ডার পথটি বের করতে পারি?


116

আমি পুরো পথ থেকে কোনও ফাইলের জন্য কেবল ফোল্ডার পাথটি পেতে চাই।

উদাহরণস্বরূপ T:\Data\DBDesign\DBDesign_93_v141b.mdbএবং আমি ঠিক পেতে চাই T:\Data\DBDesign(বাদে \DBDesign_93_v141b.mdb)।

আমি এরকম কিছু চেষ্টা করেছি:

existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = str(existGDBPath.split('\\')[0:-1])
print wkspFldr 

তবে এটি আমাকে এভাবে ফলাফল দিয়েছে:

['T:', 'Data', 'DBDesign']

যা আমার প্রয়োজনীয় ফলাফল (ফলাফল T:\Data\DBDesign) নয়।

আমি কীভাবে আমার ফাইলের পথ পেতে পারি সে সম্পর্কে কোনও ধারণা?

উত্তর:


140

আপনি splitফাংশনটি ব্যবহারের সাথে প্রায় সেখানে ছিলেন । আপনাকে কেবল নীচের মতো স্ট্রিংগুলিতে যোগদান করতে হবে।

>>> import os
>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'

যদিও, আমি এটি করতে os.path.dirnameফাংশনটি ব্যবহার করার পরামর্শ দিচ্ছি , আপনাকে কেবল স্ট্রিংটি পাস করতে হবে এবং এটি আপনার জন্য কাজটি করবে। যেহেতু, আপনি উইন্ডোতে রয়েছেন বলে মনে করছেন, abspathফাংশনটি ব্যবহার করেও বিবেচনা করুন । একটি উদাহরণ:

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'

আপনি বিভক্ত হওয়ার পরে যদি ফাইলের নাম এবং ডিরেক্টরি পাথ উভয়ই চান তবে আপনি নিম্নলিখিত os.path.splitফাংশনটি ব্যবহার করতে পারেন যা একটি টুপল প্রদান করে, নিম্নরূপ।

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')

os.sep.join(existGDBPath.split(os.sep)[:-1]সুন্দর দেখাচ্ছে।
ডেভ বাবিত

88

পাঠলিব মডিউল সহ (উত্তর উত্তর)

নতুন বিকাশের জন্য পাথলিব ব্যবহার করা উচিত One এটি পাইথন ৩.৪-এর স্টাডলিবে রয়েছে তবে পূর্ববর্তী সংস্করণগুলির জন্য পাইপআইতে উপলব্ধ । এই লাইব্রেরিটি পাথ পরিচালনা করার জন্য আরও বেশি অবজেক্ট-ওরেন্টেড পদ্ধতি সরবরাহ করে <opinion>এবং এতে সহজেই পড়তে এবং প্রোগ্রাম করা যায় </opinion>

>>> import pathlib
>>> existGDBPath = pathlib.Path(r'T:\Data\DBDesign\DBDesign_93_v141b.mdb')
>>> wkspFldr = existGDBPath.parent
>>> print wkspFldr
Path('T:\Data\DBDesign')

ওএস মডেলের সাথে

Os.path মডিউলটি ব্যবহার করুন :

>>> import os
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
>>> wkspFldr = os.path.dirname(existGDBPath)
>>> print wkspFldr 
'T:\Data\DBDesign'

আপনি এগিয়ে যেতে পারেন এবং ধরে নিতে পারেন যে যদি আপনার কোনও ধরণের ফাইল নাম ম্যানিপুলেশন করতে হয় তবে এটি ইতিমধ্যে প্রয়োগ করা হয়েছে os.path। যদি তা না হয় তবে আপনাকে সম্ভবত বিল্ডিং ব্লক হিসাবে এই মডিউলটি ব্যবহার করতে হবে।


Path().parentআমি কি খুঁজছিলাম!
iedmrc



0

ফাইলগুলি, পাথ টোকেনগুলি বিভক্ত করার জন্য এখানে আমার ছোট্ট ইউটিলিটি সহায়ক:

import os    
# usage: file, path = splitPath(s)
def splitPath(s):
    f = os.path.basename(s)
    p = s[:-(len(f))-1]
    return f, p

0

ইএসআরআই জিআইএস টেবিল ফিল্ড ক্যালকুলেটর ইন্টারফেসে এটি করার চেষ্টা করা যে কেউ পাইথন পার্সার দিয়ে এটি করতে পারেন :

PathToContainingFolder =

"\\".join(!FullFilePathWithFileName!.split("\\")[0:-1])

যাতে

\ ব্যবহারকারীগণ আমি \ ডেস্কটপ \ নতুন ফোল্ডার \ file.txt

হয়ে

\ ব্যবহারকারীরা আমি \ ডেস্কটপ \ নতুন ফোল্ডার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.