বর্তমানে যে ফাইলটি চালানো হচ্ছে তার পাথ এবং নাম কীভাবে পাব?


482

আমার কাছে অন্যান্য স্ক্রিপ্ট ফাইলগুলিতে কল করার স্ক্রিপ্ট রয়েছে তবে বর্তমানে প্রক্রিয়াটির মধ্যে চলমান ফাইলের ফাইলপথটি নেওয়া আমার দরকার।

উদাহরণস্বরূপ, ধরা যাক আমার কাছে তিনটি ফাইল রয়েছে। এক্সিকিফাইল ব্যবহার :

  • script_1.pyকল script_2.py
  • পরিবর্তে, script_2.pyকল script_3.py

আমি কিভাবে ফাইল নাম এবং পথ পেতে পারেন script_3.py, মধ্যে কোড থেকেscript_3.py থেকে আর্গুমেন্ট হিসাবে যে তথ্য পাস ছাড়াই script_2.py?

(এক্সিকিউটিংটি os.getcwd()মূল প্রারম্ভিক স্ক্রিপ্টের ফাইলপথটি বর্তমান ফাইলের নয়) দেয়)



2
os.path.relpath ( ফাইল )
গিরিশ গুপ্ত

উত্তর:


256

p1.py:

execfile("p2.py")

p2.py:

import inspect, os
print (inspect.getfile(inspect.currentframe()) # script filename (usually with path)
print (os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) # script directory

11
সতর্কতা: এই কলটি বিভিন্ন পরিবেশের সাথে একই ফলাফল দেয় না। নীচে উসাগির
ফ্যারাডে

3
@ ফ্যারাডে: আপনি একটি উদাহরণ দিতে পারেন? আমি ব্যবহার করে অনুরূপ প্রশ্নেরinspect.getabsfile() উত্তর দিয়েছি এবং আমি চেষ্টা করেছি এমন সমস্ত ক্ষেত্রে এটি কাজ করে।
jfs

1
সত্যিই কি @ উসাগির উত্তরটি আরও ভাল?
ভয়ঙ্কর

4
না ব্যবহারকারী 13993 এটিকে আরও ভালভাবে পেরেক দিয়েছে
ওসিরিসগোথর

6
ব্যবহারকারী 13993 প্রকৃতপক্ষে এটি পেরেক করেছে। হওয়া উচিতos.path.realpath(__file__)
উছুগাকা

565
__file__

অন্যরা যেমন বলেছে সিমলিঙ্কগুলি দূর করতে আপনি os.path.relpath ব্যবহার করতে পারেন :

import os

os.path.realpath(__file__)

14
এই পদ্ধতির সাথে একজনকে সতর্ক হওয়া দরকার কারণ কখনও কখনও __file__'স্ক্রিপ্ট_নাম.পি' এবং অন্য সময় 'স্ক্রিপ্ট_নাম.পিসি' দেয়। সুতরাং আউটপুট স্থিতিশীল নয়।
mechatroner

27
তবে যেহেতু আমরা কেবল এই ফাইলটির পথ ব্যবহার করছি তা অপ্রাসঙ্গিক।
উয়ে কোলোস্কা

5
এটি অদ্ভুত: কমান্ড লাইন থেকে চালানোর সময় "__file__"(স্ট্রিং হিসাবে) ডায়ার দেয় যেখানে থেকে সেন্টিমিটি চালানো হয়, কিন্তু __file__ (উদ্ধৃতি ব্যতীত উত্স ফাইলে পথ দেয় ... কেন এটি
মুওন

7
@ মুমিনে কোনও ফাইল নেম স্ট্রিং পাস হয়েছে কিনা তা নিয়ে কোনও পরীক্ষা করা হয়নি এবং যেহেতু ফাইল পাথগুলি সিডব্লিউডের সাথে সম্পর্কিত, তাই os.path.realpathফাংশনটি dirপথটির অংশটিকে ধরে নিয়েছে । os.path.dirname(os.path.realpath(__file__))ফাইলের সাথে ডিরেক্টরি ফেরত দেয়। os.path.dirname(os.path.realpath("__file__"))cwd ফেরত os.path.dirname(os.path.realpath("here_be_dragons"))এছাড়াও সিডব্লিউডির রিটার্ন দেয়
জেমি বুল

86

আপডেট 2018-11-28:

পাইথন 2 এবং 3 এর সাথে পরীক্ষাগুলির সংক্ষিপ্তসার এখানে

main.py - foo.py
foo.py চালায় - lib / bar.py
lib / bar.py চালায় - ফাইলপথ এক্সপ্রেশন মুদ্রণ করে

| Python | Run statement       | Filepath expression                    |
|--------+---------------------+----------------------------------------|
|      2 | execfile            | os.path.abspath(inspect.stack()[0][1]) |
|      2 | from lib import bar | __file__                               |
|      3 | exec                | (wasn't able to obtain it)             |
|      3 | import lib.bar      | __file__                               |

পাইথন 2 এর জন্য, প্যাকেজগুলিতে স্যুইচ করা আরও পরিষ্কার হতে পারে যাতে এটি ব্যবহার করতে পারে from lib import bar- কেবল __init__.pyদুটি ফোল্ডারে খালি ফাইল যুক্ত করুন ।

পাইথন 3 এর জন্য execfileঅস্তিত্ব নেই - নিকটতম বিকল্পটি হ'ল exec(open(<filename>).read())যদিও এটি স্ট্যাক ফ্রেমগুলিকে প্রভাবিত করে। এটি কেবলমাত্র ব্যবহার করা সহজ import fooএবং import lib.bar- কোনও __init__.pyফাইলের প্রয়োজন নেই।

আমদানি এবং সম্পাদনকারী মধ্যে পার্থক্য দেখুন


আসল উত্তর:

উইন্ডোজটিতে পাইথন ২.7.১০ সহ এই থ্রেডের উত্তরের উপর ভিত্তি করে এখানে একটি পরীক্ষা করা হয়েছে।

স্ট্যাক-ভিত্তিকগুলি কেবলমাত্র সেইগুলিই নির্ভরযোগ্য ফলাফল দেয়। শেষ দুটিতে সংক্ষিপ্ত বাক্য গঠন রয়েছে , -

print os.path.abspath(inspect.stack()[0][1])                   # C:\filepaths\lib\bar.py
print os.path.dirname(os.path.abspath(inspect.stack()[0][1]))  # C:\filepaths\lib

এগুলি ফাংশন হিসাবে sys যোগ করা হচ্ছে ! @ উসাগি এবং @ পাব্লগকে জমা দিন

নিম্নলিখিত তিনটি ফাইলের উপর ভিত্তি করে এবং এর ফোল্ডার থেকে মেইন.পি চালানো python main.py(নিরঙ্কুশ পথগুলি দিয়ে পৃথকীকরণের চেষ্টা এবং একটি পৃথক ফোল্ডার থেকে কল করা)।

সি: \ ফাইলপথগুলি \ মূল.পি: execfile('foo.py')
সি: \ ফাইলপথগুলি oo foo.py: execfile('lib/bar.py')
সি: \ ফাইলপথগুলি \ লিব \ বার.পি:

import sys
import os
import inspect

print "Python " + sys.version
print

print __file__                                        # main.py
print sys.argv[0]                                     # main.py
print inspect.stack()[0][1]                           # lib/bar.py
print sys.path[0]                                     # C:\filepaths
print

print os.path.realpath(__file__)                      # C:\filepaths\main.py
print os.path.abspath(__file__)                       # C:\filepaths\main.py
print os.path.basename(__file__)                      # main.py
print os.path.basename(os.path.realpath(sys.argv[0])) # main.py
print

print sys.path[0]                                     # C:\filepaths
print os.path.abspath(os.path.split(sys.argv[0])[0])  # C:\filepaths
print os.path.dirname(os.path.abspath(__file__))      # C:\filepaths
print os.path.dirname(os.path.realpath(sys.argv[0]))  # C:\filepaths
print os.path.dirname(__file__)                       # (empty string)
print

print inspect.getfile(inspect.currentframe())         # lib/bar.py

print os.path.abspath(inspect.getfile(inspect.currentframe())) # C:\filepaths\lib\bar.py
print os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # C:\filepaths\lib
print

print os.path.abspath(inspect.stack()[0][1])          # C:\filepaths\lib\bar.py
print os.path.dirname(os.path.abspath(inspect.stack()[0][1]))  # C:\filepaths\lib
print

72

আমি মনে করি এটি পরিষ্কার:

import inspect
print inspect.stack()[0][1]

এবং একই তথ্য পায়:

print inspect.getfile(inspect.currentframe())

[0] যেখানে স্ট্যাকের বর্তমান ফ্রেম (স্ট্যাকের শীর্ষে) এবং [1] ফাইলের নামের জন্য রয়েছে সেখানে স্ট্যাকের পিছনে যাওয়ার জন্য বৃদ্ধি করুন

print inspect.stack()[1][1]

স্ক্রিপ্টের ফাইলের নাম যা বর্তমান ফ্রেম বলে। এছাড়াও, [-1] ব্যবহার করলে আপনাকে স্ট্যাকের নীচে, মূল কলিং স্ক্রিপ্টটি পাওয়া যাবে।


4
টিপলের ভিতরে অবস্থানের উপর নির্ভর করার পরামর্শ দিবেন না। কোডটি পড়ার সময় আপনি কী ডেটা পাওয়ার চেষ্টা করছেন তা মোটেই পরিষ্কার নয়।
jpmc26

5
inspect.getfile()ফেরৎ __file__অ্যাট্রিবিউট যদি একটি মডিউল বস্তু গৃহীত। inspect.currentframe()মডিউলটি ফেরত দেয়। তবে, এটি বলার ব্যয়বহুল উপায় __file__
মার্টিজন পিটারস

inspect.stack()এটি একটি দুর্দান্ত ব্যয়বহুল ফাংশন, কেবলমাত্র এর চেয়ে বেশি inspect.currentframe(), এবং এটি inspect.getfile()মডিউল অবজেক্টকে কল করে।
মার্টিজন পিটারস

42
import os
os.path.dirname(__file__) # relative directory path
os.path.abspath(__file__) # absolute file path
os.path.basename(__file__) # the file name only

1
আমি মাত্র @ প্যাট নটজের মন্তব্যটি চেষ্টা করেছি। আমি মনে করি আপনি কেবল ফাইলের নামটি দিয়ে যেতে পারেন __file__
hlin117

পাইথন 3 এ, os.path.dirnameযেখানে আপনি স্ক্রিপ্টটি চালাচ্ছেন সেখান থেকে আপনাকে আপেক্ষিক পথ দেবে। মধ্যে যেমন হতে হবে এবং স্ক্রিপ্ট না পথটি। আমি অ্যাবস্পাথের সন্ধান করছিলাম তবে স্ক্রিপ্টের নাম মুছে ফেলছিলাম। স্পষ্টতই sys.path এর প্রথম উপাদানটির উত্তর । python ../../test.pyos.path.dirname../../sys.path[0]
আরিজমান

37

আপনার স্ক্রিপ্টে যদি কেবল একটি ফাইল থাকে তবে সেরা হিসাবে চিহ্নিত পরামর্শগুলি সমস্ত সত্য।

যদি আপনি মডিউল হিসাবে আমদানি করা হতে পারে এমন কোনও ফাইল থেকে এক্সিকিউটেবলের নাম (যেমন বর্তমান প্রোগ্রামের জন্য পাইথন ইন্টারপ্রেটারকে দেওয়া মূল ফাইলটি) জানতে চান, আপনাকে এটি করতে হবে (আসুন ধরে নেওয়া যাক এটি কোনও ফাইলে রয়েছে নাম দেওয়া foo.py ):

import inspect

print inspect.stack()[-1][1]

কারণ [-1]স্ট্যাকের শেষ জিনিস ( ) হ'ল প্রথম জিনিস যা এতে প্রবেশ করেছিল (স্ট্যাকগুলি হল লাইফো / ফিলো ডেটা স্ট্রাকচার)।

তারপরে ফাইল বার.পি এ যদি আপনি foo.py এর চেয়ে বার.পিimport foo প্রিন্ট করেন তবে যা এইগুলির মূল্য হবে:

  • __file__
  • inspect.getfile(inspect.currentframe())
  • inspect.stack()[0][1]

এটি ভাল কাজ করে তবে গ্রহণে ইউনিট পরীক্ষার জন্য নয়, আমি পেয়েছি / home
user/

2
এটি বানানের একটি ব্যয়বহুল উপায় sys.modules['__main__'].__file__, সত্যই।
মার্টিজন পিটারস

14
import os
print os.path.basename(__file__)

এটি কেবল আমাদের ফাইলের নাম দেবে। উদাহরণস্বরূপ, যদি ফাইলের অ্যাবসাথ সি: \ abcd \ abc.py হয় তবে ২ য় লাইন abc.py প্রিন্ট করবে


14

"বর্তমানে প্রক্রিয়াটির মধ্যে থাকা ফাইলটির ফাইলপথ" বলতে আপনার অর্থ কী তা সম্পূর্ণভাবে পরিষ্কার নয়। sys.argv[0]সাধারণত স্ক্রিপ্টের অবস্থানটি পাইথন দোভাষী দ্বারা আহ্বান করা হয়েছিল। আরও তথ্যের জন্য sys ডকুমেন্টেশন চেক করুন।

যেমন @ টিম এবং @ প্যাট নটজ উল্লেখ করেছেন, __file__ বৈশিষ্ট্যটি অ্যাক্সেস সরবরাহ করে

মডিউলটি লোড করা হয়েছে এমন ফাইলটি যদি কোনও ফাইল থেকে লোড করা হয়


1
"উইন্ড 32 এক্সে অজগর প্রোগ্রামটি পাস করার পরে " মুদ্রণ os.path.abspath ( ফাইল ) "এবং" মুদ্রণ ইন্সপেক্ট.গেটফিল (ইন্সপেক্ট.কোরেন্টফ্রেম ()) "কাজ করে না। কেবল sys.argv [0] কাজ করে! :) তবে আপনি কেবল নামটি পান!
এএফ।

11

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা অবশ্যই উইন্ডোজ পরিবেশের অধীনে কাজ করবে। এই কোডটি স্নিপড যা আমি এর সাথে শেষ করেছি:

import os,sys
PROJECT_PATH = os.path.abspath(os.path.split(sys.argv[0])[0])

এটা বেশ কড়া সিদ্ধান্ত। তবে এর জন্য কোনও বাহ্যিক গ্রন্থাগার দরকার নেই এবং এটি আমার ক্ষেত্রে সবচেয়ে গুরুত্বপূর্ণ বিষয়।


1
এর জন্য আমাকে "আমদানি ওএস, সিস" করতে হয়েছিল, তবে এখনও পর্যন্ত এটি সেরা উত্তর যা আসলে স্ট্রিংয়ের শেষে ফাইলের নাম ছাড়াই কেবল ফেরত দেয়।
ইমমাগ্রাস


8
import os
os.path.dirname(os.path.abspath(__file__))

পরিদর্শন বা অন্য কোনও গ্রন্থাগারের প্রয়োজন নেই।

এটি আমার জন্য কাজ করেছিল যখন আমাকে কোনও স্ক্রিপ্ট আমদানি করতে হয়েছিল (অন্য কোনও ডিরেক্টরি থেকে চালিত স্ক্রিপ্ট থেকে), এটি একই ফোল্ডারে আমদানিকৃত স্ক্রিপ্টের মতো একটি কনফিগারেশন ফাইল ব্যবহার করে।


যদি বর্তমান কার্যক্ষম ডিরেক্টরি (os.getcwd) ফাইলটি অবস্থিত সেই ডিরেক্টরি থেকে আলাদা হয় তবে এটি পছন্দসই উত্তরটি উত্পন্ন করতে পারে না।
আয়রন বালিশ

2
তা কিভাবে? এই ক্ষেত্রে আমার জন্য ভাল কাজ করে। ফাইলটি যে ডিরেক্টরিটিতে রয়েছে তা আমি পেয়েছি
মাইকেল মায়ার

@ আয়রনপিলো সম্ভবত এই উত্তরটি আপনাকে যা প্রয়োজন তা আপনাকে সাহায্য করবে। stackoverflow.com/a/41546830/3123191
Kwuite


6
import sys

print sys.path[0]

এটি বর্তমানে সম্পাদনকারী স্ক্রিপ্টের পথটি মুদ্রণ করবে


2
sys.path [0] খুব দরকারী, তবে স্ক্রিপ্ট 1 এর পথ দেয়, স্ক্রিপ্ট 3 এর অনুরোধ অনুসারে নয়
জেমস

কমপক্ষে ওএস এক্সে, ২.7 সহ, আমি এটি নির্ভরযোগ্য কোনও কিছুই করি না। সরাসরি একই ফাইলটি কার্যকর করা হলে এটি কাজ করে।
Repl


4

তুমি ব্যবহার করতে পার inspect.stack()

import inspect,os
inspect.stack()[0]  => (<frame object at 0x00AC2AC0>, 'g:\\Python\\Test\\_GetCurrentProgram.py', 15, '<module>', ['print inspect.stack()[0]\n'], 0)
os.path.abspath (inspect.stack()[0][1]) => 'g:\\Python\\Test\\_GetCurrentProgram.py'

4

পাইথন 3 যেহেতু মোটামুটি মূলধারার, তাই আমি একটি pathlibউত্তর অন্তর্ভুক্ত করতে চেয়েছিলাম , কারণ আমি বিশ্বাস করি যে এটি সম্ভবত ফাইল এবং পথের তথ্য অ্যাক্সেসের জন্য আরও ভাল সরঞ্জাম।

from pathlib import Path

current_file: Path = Path(__file__).resolve()

আপনি যদি বর্তমান ফাইলের ডিরেক্টরি অনুসন্ধান করতে চান .parentতবে Path()বিবৃতিতে যোগ করার মতোই সহজ :

current_path: Path = Path(__file__).parent.resolve()

3
import sys
print sys.argv[0]

10
দুর্ভাগ্যক্রমে এটি কেবল তখনই কাজ করে যদি স্ক্রিপ্টটিকে পুরো পথ দিয়ে ডাকা হত, কারণ এটি কেবলমাত্র কমান্ড লাইনে "প্রথম যুক্তি" দেয় যা স্ক্রিপ্টে কলিং।
ক্রেগক্স

2

এই কাজ করা উচিত:

import os,sys
filename=os.path.basename(os.path.realpath(sys.argv[0]))
dirname=os.path.dirname(os.path.realpath(sys.argv[0]))

2
print(__file__)
print(__import__("pathlib").Path(__file__).parent)

4
কোড শুধুমাত্র উত্তর নিরুৎসাহিত করা হয়। এটি কীভাবে সমস্যাটি সমাধান করে বা বিদ্যমান উত্তরগুলির থেকে এটি কীভাবে পৃথক হয় সে সম্পর্কে কিছু ব্যাখ্যা যুক্ত করুন। পর্যালোচনা থেকে
নিক

1

সম্পাদনকারী স্ক্রিপ্টের ডিরেক্টরি পেতে

 print os.path.dirname( inspect.getfile(inspect.currentframe()))

1

আমি সর্বদা সবেমাত্র কারেন্ট ওয়ার্কিং ডিরেক্টরি বা সিডাব্লুডির ওএস বৈশিষ্ট্যটি ব্যবহার করেছি। এটি স্ট্যান্ডার্ড লাইব্রেরির অংশ এবং এটি কার্যকর করা খুব সহজ। এখানে একটি উদাহরণ:

    import os
    base_directory = os.getcwd()

1
আপনি কি নিজের উত্তরটি পরিবর্তন করতে পারবেন যাতে এটি উত্থাপিত প্রশ্নের ক্ষেত্রে প্রযোজ্য? " বর্তমানে যে ফাইলটি চালানো হচ্ছে তার পথ এবং নাম কীভাবে পাব ? " এই প্রশ্নের উত্তরটিতে এই উত্তরটি প্রয়োগ হয় না
মার্কো

1
এটি পাইথন কমান্ডটি যেখান থেকে চালিয়েছে সেটির পথ দেয়। সুতরাং আপনি python script.pyযদি একই ফোল্ডারে আপনি ইতিমধ্যে কমান্ডটি চালাচ্ছেন তখন এটি কাজ করার মতো মনে হয়, বাস্তবে এটি pwdলিনাক্সে চলার মতোই ।
জর্জ

0

আমি __file__ এর সাহায্যে পদ্ধতির ব্যবহার করেছি
os.path.abspath(__file__)
তবে কিছুটা কৌশল আছে, কোডটি প্রথমবার চালানো হলে এটি .py ফাইলটি ফেরত দেয়, পরবর্তী রানগুলি * .pyc ফাইলটির নাম দেয়
যাতে আমি থাকি:
inspect.getfile(inspect.currentframe())
বা
sys._getframe().f_code.co_filename


0

আমি একটি ফাংশন যা অ্যাকাউন্ট অন্ধকার নিতে লিখেছিলেন ডিবাগার এবং unittest । এটি আপনার প্রবর্তিত প্রথম স্ক্রিপ্টের ফোল্ডারটি ফিরিয়ে দেয়। আপনি __file__ var optionচ্ছিকভাবে নির্দিষ্ট করতে পারেন , তবে মূল বিষয়টি হ'ল আপনাকে আপনার সমস্ত কলিং হায়ারার্কির মধ্যে এই পরিবর্তনশীলটি ভাগ করতে হবে না ।

সম্ভবত আপনি অন্যদের হ্যান্ডেল করতে পারেন বিশেষ ক্ষেত্রে আমি দেখতে পাইনি তবে এটি আমার পক্ষে ঠিক আছে।

import inspect, os
def getRootDirectory(_file_=None):
    """
    Get the directory of the root execution file
    Can help: http://stackoverflow.com/questions/50499/how-do-i-get-the-path-and-name-of-the-file-that-is-currently-executing
    For eclipse user with unittest or debugger, the function search for the correct folder in the stack
    You can pass __file__ (with 4 underscores) if you want the caller directory
    """
    # If we don't have the __file__ :
    if _file_ is None:
        # We get the last :
        rootFile = inspect.stack()[-1][1]
        folder = os.path.abspath(rootFile)
        # If we use unittest :
        if ("/pysrc" in folder) & ("org.python.pydev" in folder):
            previous = None
            # We search from left to right the case.py :
            for el in inspect.stack():
                currentFile = os.path.abspath(el[1])
                if ("unittest/case.py" in currentFile) | ("org.python.pydev" in currentFile):
                    break
                previous = currentFile
            folder = previous
        # We return the folder :
        return os.path.dirname(folder)
    else:
        # We return the folder according to specified __file__ :
        return os.path.dirname(os.path.realpath(_file_))

0

প্ল্যাটফর্মগুলি (ম্যাকোস / উইন্ডোজ / লিনাক্স) জুড়ে মাইগ্রেশন ধারাবাহিকতা রাখতে, চেষ্টা করুন:

path = r'%s' % os.getcwd().replace('\\','/')


2
এটা ভুল. এটি আপনাকে বর্তমান পথ পায় তবে বর্তমান ফাইলের পথ নয়।
চার্লস প্লাগার

0

সবচেয়ে সহজ উপায়:

স্ক্রিপ্ট_1 . py এ:

import subprocess
subprocess.call(['python3',<path_to_script_2.py>])

মধ্যে script_2.py:

sys.argv[0]

পিএস: আমি চেষ্টা করেছি execfile, তবে যেহেতু এটি স্ক্রিপ্ট ৩.পি পড়ছে স্ট্রিং হিসাবে, sys.argv[0]ফিরে এসেছে <string>


0

আমি যা ব্যবহার করি তা এখানে so __name__সর্বদা সংজ্ঞায়িত করা হয় তবে __file__কোডটি যখন ফাইল হিসাবে চালিত হয় কেবল তখনই সংজ্ঞায়িত হয় (উদাহরণস্বরূপ IDLE / iPython এ নয়)।

    if '__file__' in globals():
        self_name = globals()['__file__']
    elif '__file__' in locals():
        self_name = locals()['__file__']
    else:
        self_name = __name__

বিকল্পভাবে, এটি লিখিত হতে পারে:

self_name = globals().get('__file__', locals().get('__file__', __name__))

-2

এই উত্তরগুলির বেশিরভাগ পাইথন সংস্করণ ২.x বা তার আগেও লেখা হয়েছিল। পাইথন ৩.x এ প্রিন্ট ফাংশনের সিনট্যাক্স পরিবর্তিত হয়েছে বন্ধনী, অর্থাত্ মুদ্রণ () require

সুতরাং, পাইথন ২.x এ ব্যবহারকারী ১৩৯৯৩ থেকে এই উচ্চতর স্কোর উত্তর:

import inspect, os
print inspect.getfile(inspect.currentframe()) # script filename (usually with path)
print os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory

পাইথন 3.x এ পরিণত হয়:

import inspect, os
print(inspect.getfile(inspect.currentframe())) # script filename (usually with path)
print(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) ) # script directory

-3

আপনি যদি না চান কেবল ফাইল নাম চান ./বা .pyআপনি এটি চেষ্টা করতে পারেন

filename = testscript.py
file_name = __file__[2:-3]

file_name টেস্টস্ক্রিপ্ট মুদ্রণ করবে আপনি ভিতরে যা ইনডেক্স পরিবর্তন করে যা চান তা তৈরি করতে পারেন []


-3
import os

import wx


# return the full path of this file
print(os.getcwd())

icon = wx.Icon(os.getcwd() + '/img/image.png', wx.BITMAP_TYPE_PNG, 16, 16)

# put the icon on the frame
self.SetIcon(icon)

7
os.getcwd () বর্তমান কার্যনির্বাহী ফাইলের ডিরেক্টরি নয়, প্রকৃতির বর্তমান ওয়ার্কিং ডিরেক্টরিটি প্রদান করে। এটি সঠিক ফলাফলগুলি প্রত্যাবর্তনের জন্য উপস্থিত হতে পারে তবে এমন প্রচুর কেস রয়েছে যেখানে ফলাফলটি বর্তমান ফাইলের পিতামহিত ডিরেক্টরি হবে না। ওএস.প্যাথ.ডাইরনাম ( ফাইল ) উপরে প্রস্তাবিত হিসাবে ব্যবহার করা আরও অনেক ভাল ।
samaspin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.