এটি একটি নবাগত প্রশ্নের মতো মনে হতে পারে, তবে তা নয়। কিছু সাধারণ পদ্ধতি সব ক্ষেত্রে কার্যকর হয় না:
sys.argv [0]
এর অর্থ হল ব্যবহার করা path = os.path.abspath(os.path.dirname(sys.argv[0]))
, তবে আপনি যদি অন্য ডিরেক্টরিতে পাইথন স্ক্রিপ্ট থেকে চালাচ্ছেন তবে এটি কার্যকর হয় না এবং এটি বাস্তব জীবনে ঘটতে পারে।
__file__
এর অর্থ ব্যবহার করা path = os.path.abspath(os.path.dirname(__file__))
, কিন্তু আমি দেখতে পেয়েছি এটি কার্যকর হয় না:
py2exe
একটি নেই__file__
গুণ, কিন্তু একটি হল কার্যসংক্রান্ত- আপনি যখন আইডিএল থেকে চালাবেন তখন
execute()
কোনও__file__
বৈশিষ্ট্য নেই - ওএস এক্স 10.6 যেখানে আমি পাই
NameError: global name '__file__' is not defined
অসম্পূর্ণ উত্তর সহ সম্পর্কিত প্রশ্ন:
- পাইথন - ফাইল চলার পথে পথ সন্ধান করুন
- বর্তমান প্রোগ্রামের পথটি নির্ভর করে আমি কীভাবে প্রোগ্রামটি চালাব
- পাইথনে চলমান স্ক্রিপ্টের পথটি কীভাবে জানবেন?
- পাইথন স্ক্রিপ্টের ডিরেক্টরিতে ডিরেক্টরি পরিবর্তন করুন
আমি একটি জেনেরিক সমাধান খুঁজছি , একটি যা উপরের সমস্ত ব্যবহারের ক্ষেত্রে কাজ করবে।
হালনাগাদ
এখানে একটি টেস্টকেসের ফলাফল:
পাইথন এপিপি আউটপুট (উইন্ডোজে)
a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz
b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
a.py
#! /usr/bin/env python
import os, sys
print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print "a.py: os.getcwd()=", os.getcwd()
print
execfile("subdir/b.py")
subdir / b.py
#! /usr/bin/env python
import os, sys
print "b.py: sys.argv[0]=", sys.argv[0]
print "b.py: __file__=", __file__
print "b.py: os.getcwd()=", os.getcwd()
print
গাছ
C:.
| a.py
\---subdir
b.py
NameError: global name '__file__' is not defined
ব্যবহার করতে পারি এবং এটি আইডলির অভ্যন্তরে নয়। মনে করুন এটি__file__
কেবলমাত্র মডিউলগুলির মধ্যেই সংজ্ঞায়িত।