python - वर्तमान निर्देशिका और फ़ाइल की निर्देशिका खोजें




directory (10)

पायथन में, मैं खोजने के लिए किस आदेश का उपयोग कर सकता हूं:

  1. वर्तमान निर्देशिका (जहां मैं टर्मिनल में था जब मैं पाइथन लिपि चलाता था), और
  2. जहां मैं निष्पादित कर रहा हूं फ़ाइल है?

1. वर्तमान निर्देशिका पूर्ण पथ प्राप्त करने के लिए

    >>import os
    >>print os.getcwd()

ओ / पी: "सी: \ उपयोगकर्ता \ व्यवस्थापक \ myfolder"

1. अकेले वर्तमान निर्देशिका फ़ोल्डर नाम प्राप्त करने के लिए

    >>import os
    >>str1=os.getcwd()
    >>str2=str1.split('\\')
    >>n=len(str2)
    >>print str2[n-1]

ओ / पी: "MyFolder"


आप इसे संदर्भ के रूप में उपयोगी पा सकते हैं:

import os

print("Path at terminal when executing this file")
print(os.getcwd() + "\n")

print("This file path, relative to os.getcwd()")
print(__file__ + "\n")

print("This file full path (following symlinks)")
full_path = os.path.realpath(__file__)
print(full_path + "\n")

print("This file directory and name")
path, filename = os.path.split(full_path)
print(path + ' --> ' + filename + "\n")

print("This file directory only")
print(os.path.dirname(full_path))

पाइथन में कार्य निर्देशिका प्राप्त करने और सेट करने के लिए। आप निम्न कोड का उपयोग कर सकते हैं:

os cwd = os.getcwd () # आयात करने के लिए आयात निर्देशिका प्राप्त करें


पार्टी के लिए थोड़ा देर हो चुकी है, लेकिन मुझे लगता है कि आपके वर्तमान निष्पादन संदर्भ का नाम खोजने का सबसे संक्षिप्त तरीका होगा

current_folder_path, current_folder_name = os.path.split(os.getcwd())

मौजूदा स्क्रिप्ट वाली निर्देशिका प्राप्त करने के लिए पाथलिब का उपयोग इस तरह किया जा सकता है:

import pathlib
filepath = pathlib.Path(__file__).resolve().parent

यदि आप उस फ़ाइल की वर्तमान निर्देशिका ढूंढने का प्रयास कर रहे हैं जिसमें आप वर्तमान में हैं:

ओएस अज्ञेयवादी तरीका:

dirname, filename = os.path.split(os.path.abspath(__file__))

यदि आप वर्तमान में निष्पादित स्क्रिप्ट के स्थान की खोज कर रहे हैं, तो आप पूर्ण पथ प्राप्त करने के लिए sys.argv[0] का उपयोग कर सकते हैं।


वर्तमान कार्य निर्देशिका को देखने के लिए निम्न स्क्रिप्ट टाइप करें:

import os
current_working_directory = os.getcwd()

वर्तमान निर्देशिका पूर्ण पथ प्राप्त करने के लिए:

os.path.realpath ( '।')


pathlib मॉड्यूल, पायथन 3.4 ( पीईपी 428 - पाथलिब मॉड्यूल - ऑब्जेक्ट-ओरिएंटेड फाइल सिस्टम पथ ) में पेश किया गया है, पथ से संबंधित अनुभव को बहुत बेहतर बनाता है।

$ pwd
/home/skovorodkin/stack
$ tree
.
└── scripts
    ├── 1.py
    └── 2.py

वर्तमान कार्य निर्देशिका प्राप्त करने के लिए Path.cwd() उपयोग करें:

from pathlib import Path

print(Path.cwd())  # /home/skovorodkin/stack

अपनी स्क्रिप्ट फ़ाइल का पूर्ण पथ प्राप्त करने के लिए, Path.resolve() विधि का उपयोग करें:

print(Path(__file__).resolve())  # /home/skovorodkin/stack/scripts/1.py

और उस निर्देशिका का मार्ग प्राप्त करने के लिए जहां आपकी स्क्रिप्ट स्थित है, अभिगम .parent .resolve() इसे .resolve() से पहले कॉल करने की अनुशंसा की जाती है .parent ):

print(Path(__file__).resolve().parent)  # /home/skovorodkin/stack/scripts

याद रखें कि कुछ स्थितियों में __file__ विश्वसनीय नहीं है: मैं पाइथन में वर्तमान निष्पादित फ़ाइल का पथ कैसे प्राप्त करूं?

कृपया ध्यान दें, Path.cwd() , Path.resolve() और अन्य Path विधियां पथ वस्तुएं PosixPath हैं (मेरे मामले में PosixPath ), तार नहीं। पाइथन 3.4 और 3.5 में कुछ दर्द हुआ, क्योंकि open अंतर्निर्मित फ़ंक्शन केवल स्ट्रिंग या बाइट ऑब्जेक्ट्स के साथ काम कर सकते थे, और Path ऑब्जेक्ट्स का समर्थन नहीं करते थे, इसलिए आपको Path ऑब्जेक्ट को तारों में कनवर्ट करना था या Path.open() विधि का उपयोग Path.open() , लेकिन बाद के विकल्प के लिए आपको पुराने कोड को बदलने की आवश्यकता है:

$ cat scripts/2.py
from pathlib import Path

p = Path(__file__).resolve()

with p.open() as f: pass
with open(str(p)) as f: pass
with open(p) as f: pass

print('OK')

$ python3.5 scripts/2.py
Traceback (most recent call last):
  File "scripts/2.py", line 11, in <module>
    with open(p) as f:
TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')

जैसा कि आप open(p) पाइथन 3.5 के साथ काम नहीं कर सकते हैं।

पीईपी 51 9 - पाइथन 3.6 में लागू एक फ़ाइल सिस्टम पथ प्रोटोकॉल जोड़ना , फ़ंक्शन open लिए PathLike ऑब्जेक्ट्स का समर्थन जोड़ता है, इसलिए अब आप Path को सीधे open लिए Path ऑब्जेक्ट पास कर सकते हैं:

$ python3.6 scripts/2.py
OK




directory