পাইথনে খোলা ফাইল থেকে পাথ পান


113

আমার যদি একটি খোলার ফাইল থাকে তবে osস্ট্রিং হিসাবে পুরো পাথটি পাওয়ার জন্য কি কোনও কল আছে?

f = open('/Users/Desktop/febROSTER2012.xls')

থেকে f, আমি কিভাবে পাবেন "/Users/Desktop/febROSTER2012.xls"?

উত্তর:


145

এখানে কীটি খোলা ফাইলটি উপস্থাপন করে nameএমন fঅবজেক্টের বৈশিষ্ট্য । আপনি এটি যেমন পেতে:

>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'

এটি সাহায্য করে?


4
দ্বারা নির্মিত ফাইলগুলির জন্য: tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')কাজ করে না!
ভিক্টর

19
@ ভিক্টর: দয়া tempfileকরে আপনার উল্লিখিত tempfile.NamedTemporaryFileডকুমেন্টেশনের ঠিক নীচে মডিউলটির ডকুমেন্টেশন পড়ুন tempfile.TemporaryFile। এটি অস্থায়ী ফাইলের জন্য সুনির্দিষ্ট কেস এবং ডক্স হিসাবে দেখা গেছে, ইতিমধ্যে বিদ্যমান সমাধান রয়েছে। tempfile.TemporaryFileআপনি নামটি পড়তে চান এমন ক্ষেত্রে এটি ব্যবহার করা উচিত নয়।
টাডেক

12
আপনি ( 'W', 'foo.txt') খোলা ব্যবহার করে একটি ফাইল তৈরি করুন এবং তারপর f.name করেন তাহলে, এটি শুধুমাত্র সঙ্গে আউটপুট foo.txt সরবরাহ করে
searchengine27

জ্যানস একটি সমাধান দেয় যা আপেক্ষিক পাথের জন্যও কাজ করে। নীচে তার উত্তর দেখুন।
মার্কাস

আপনার নামের প্রয়োজন হলে টেম্পাইল রয়েছে N নামডেমে্পোরারি ফাইল।
অ্যাপোলো ডেটা

96

আমি সঠিক একই সমস্যা ছিল। আপনি যদি কোনও আপেক্ষিক পাথ ব্যবহার করেন তবে os.path.dirname (পাথ) কেবল আপেক্ষিক পাথ ফিরে আসবে। os.path.relpath কৌশলটি করে:

>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)

15
এটি আসলে আসল উত্তর।
ব্লুট্রিন

1
এটি কেবল তখনই কাজ করে যদি আপেক্ষিক ফাইল পথটি এখনও সঠিক ফাইল পাথ হয়। আমি যদি ডিরেক্টরি 'Doc / ডকুমেন্টস /' থেকে ফাইলের নামটি 'টেক্সট.টেক্সট' হিসাবে নির্দিষ্ট করি এবং তারপরে ডিরেক্টরিগুলি '~ /' তে পরিবর্তন করি, os.path.realpathতবে '~ / নথি / পাঠ্য.সেক্সট' এর পরিবর্তে '~ / Text.txt' ফিরে আসবে।
কে। নীলসন

1
আমি রিয়েলপথ নিয়ে একটি সমস্যা লক্ষ্য করেছি। এটি ফাইলগুলির আলফা অক্ষরের ক্ষেত্রে সংশোধন করে না তবে খোলা স্টেটমেন্টে কেসটি ব্যবহৃত হয়। আমি আশা করেছিলাম এটি ফাইলের নামটি ফিরিয়ে দেবে কারণ এটি আসলে ফাইল সিস্টেমে রয়েছে। (এটি অবশ্যই উইন্ডোজ)
রুফাসভিএস

12

এবং যদি আপনি কেবল ডিরেক্টরি নাম পেতে চান এবং ফাইল নামটির সাথে এটির প্রয়োজনের প্রয়োজন না হয়, তবে আপনি osপাইথন মডিউলটি ব্যবহার করে নিম্নলিখিত প্রচলিত পদ্ধতিতে এটি করতে পারেন ।

>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'

এইভাবে আপনি ডিরেক্টরি কাঠামো ধরে রাখতে পারেন।


আপনি যদি এটি ব্যবহার করেন তবে এটি খালি স্ট্রিং দেয় f = open('febROSTER2012.xls')। আপনি কিভাবে পুরো পথে যেতে পারেন?
এনজেডডি

3

আপনি এটি এই মত পেতে পারেন।

filepath = os.path.abspath(f.name)

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