टिप्पणियों और उस निर्देशिका परिवर्तन मैंने महसूस किया कि pathlib
बदलते निर्देशिकाओं मदद नहीं करता है के आधार पर यदि संभव हो तो बचा जाना चाहिए।
import os
import contextlib
from pathlib import Path
@contextlib.contextmanager
def working_directory(path):
"""Changes working directory and returns to previous on exit."""
prev_cwd = Path.cwd()
os.chdir(path)
try:
yield
finally:
os.chdir(prev_cwd)
एक अच्छा विकल्प के लिए है:
जब से मैं सही निर्देशिका से अजगर के बाहर bash स्क्रिप्ट कॉल करने के लिए की जरूरत है, मैं इस answer के समान निर्देशिका बदलने का एक क्लीनर तरीका के लिए एक संदर्भ प्रबंधक का उपयोग कर के लिए चुना इस answer में subprocess.Popen
वर्ग के cwd
पैरामीटर का उपयोग करें।
आप अजगर < 3.6 का उपयोग कर रहे हैं और path
वास्तव में एक pathlib.Path
है, तो आप chdir
बयान में str(path)
की जरूरत है।
वर्तमान निर्देशिका को बदलना शायद ही कभी एक अच्छा विचार है। आपको निर्देशिका बदलने की आवश्यकता क्यों है? –
एक छोटी बैश स्क्रिप्ट है जिसे मैं पायथन में फिर से लिखना चाहता हूं। इस तरह से मैं बाहरी बैश स्क्रिप्ट को कॉल करने से त्रुटियों को अधिक आसानी से संभाल सकता हूं। – Lukas
यदि आपको इसकी आवश्यकता नहीं है तो आपको 'pathlib' का उपयोग करने की आवश्यकता नहीं है -' os.chdir ('/ etc') ' – furas