আপনার বর্ণিত দৃশ্যের জন্য, রিয়েলপথ এবং অ্যাবসপাথ একত্রিত করার কোনও কারণ নেই, যেহেতু ফলাফল ফেরত দেওয়ার আগে os.path.realpathআসলে কল করে os.path.abspath(আমি পাইথন 2.5 থেকে পাইথন ৩.6 এ দেখেছি)।
os.path.abspath পরম পথটি ফিরিয়ে দেয় তবে এর যুক্তিতে প্রতিলিঙ্কগুলি সমাধান করে না।
os.path.realpath প্রথমে পথে কোনও প্রতীকী লিঙ্কগুলি সমাধান করবে এবং তারপরে পরম পথটি ফিরিয়ে দেবে।
তবে, আপনি যদি আশা করেন যে আপনার পাথটিতে একটি রয়েছে ~, তবে অ্যাবসপথ বা রিয়েলপথ উভয়ই ~ব্যবহারকারীর হোম ডিরেক্টরিতে সমাধান করবে না এবং ফলাফলটি অবৈধ হবে । os.path.expanduserএটি ব্যবহারকারীর ডিরেক্টরিতে সমাধান করতে আপনাকে ব্যবহার করতে হবে।
পুঙ্খানুপুঙ্খ ব্যাখ্যার জন্য, এখানে কয়েকটি ফলাফল যা আমি উইন্ডোজ এবং লিনাক্স, পাইথন ৩.৪ এবং পাইথন ২.6 এ যাচাই করেছি। বর্তমান ডিরেক্টরি ( ./) হ'ল আমার হোম ডিরেক্টরি, যা দেখতে এটির মতো দেখাচ্ছে:
myhome
|- data (symlink to /mnt/data)
|- subdir (extra directory, for verbose explanation)
os.path.abspath('./')
'/home/myhome'
os.path.abspath('./subdir/../data')
'/home/myhome/data'
os.path.realpath('./')
'/home/myhome'
os.path.realpath('./subdir/../')
'/home/myhome'
os.path.realpath('./subdir/../data')
'/mnt/data'
os.path.abspath('~/data')
'/home/myhome/~/data'
os.path.realpath('~/data')
'/home/myhome/~/data'
os.path.exists(os.path.abspath('~/data'))
False
os.path.exists(os.path.realpath('~/data'))
False
os.path.realpath(os.path.expanduser('~/subdir/../data'))
'/mnt/data'
realpath()থাকতে পারে..এবং আপনি কেন উভয় ব্যবহার করবেন এই প্রশ্নের সত্যই উত্তর দেয় না; জোব্রাদের উত্তর আরও সঠিক।