2013-10-11 3 views
10

मैं पाइथन [3.3] के अंदर से चल रहे पायथन स्क्रिप्ट की निर्देशिका कैसे प्राप्त करूं? मैंने कोशिश की है कि How can I find script's directory with Python? पर क्या सुझाव दिया गया था, लेकिन मुझे "अमान्य वाक्यविन्यास" मिलता है और "ओएस" (और मैंने आयात किया है) को निर्देशित किया है।मुझे स्क्रिप्ट के अंदर से पाइथन चल रही स्क्रिप्ट की निर्देशिका कैसे मिलती है?

मुझे सबसे नज़दीकी जवाब मिल गया है: sys.argv [0], लेकिन इसमें अभी भी फ़ाइल का नाम शामिल है, इसलिए मैं इसका उपयोग नहीं कर सकता। क्या कोई और तरीका है?

नोट: मैं पाइथन के लिए बिल्कुल नया हूं।

यहाँ कुछ कोड मैं अब तक बना दिया है (भाग जहां यह rundir = sys.argv [0] है, जहां सुझाव कोड जाना होगा कहते हैं) है:

import pygame 
from pygame.locals import * 
import os, sys 
import time 
pygame.init() 

import statuscheck 
print("Completed program status check.") 

import mods.modlist 
print("Loaded all mods..") 

print("Completed loading") 

sys.dont_write_bytecode = True 

rundir = sys.argv[0] 

print("Running from" + rundir) 
+0

आप अपने सटीक कोड और सटीक त्रुटि आप प्राप्त पोस्ट कर सकते हैं? इस सवाल का जवाब आप लिंक किए गए लगता है जैसे कि यह आप के लिए काम करना चाहिए। –

उत्तर

-8

आपका snytax बंद होना चाहिए।

import os 
cwd = os.getcwd() 

यह दोनों यूनिक्स और विंडोज पर काम करता है: os.getcwd अगर आप इसे सही उपयोग करें काम करना चाहिए।

यकीन है कि वाक्य रचना सही है और है कि आप इसे ऊपर की तरह इस्तेमाल करते हैं।

+7

ध्यान दें कि यह वर्तमान कार्यशील निर्देशिका प्राप्त करता है, जो स्क्रिप्ट युक्त निर्देशिका हो सकता है या नहीं। यदि आप वास्तव में जो चाहते हैं वह निर्देशिका है जिसमें स्क्रिप्ट फ़ाइल है तो यह बदनामी होगी। कल्पना करें कि आप किसी अन्य निर्देशिका में हैं और स्क्रिप्ट को अपने पूर्ण पथ का उपयोग करके निष्पादित करते हैं। getcwd तब स्क्रिप्ट पथ वापस नहीं करेगा। –

1

इस प्रयास करें:

import os 
os.path.dirname(__file__) 

__file__ फ़ाइल आप में हैं के नाम हो जाता है। dirname समारोह निर्देशिका है कि फाइल में है हो जाता है।

सिंटेक्स त्रुटि शायद प्रिंट statemen साथ करना था टी। पायथन 3.x

print "hi" 

अमान्य है। प्रिंट अब एक समारोह है।

print("hi") 

काम करता है। आपको कोष्ठक की आवश्यकता है।

39

निर्देशिका कि मॉड्यूल शामिल आप चल रहे हैं पाने के लिए:

import os 
path = os.getcwd() 

docs से::

import os 
path = os.path.dirname(os.path.realpath(__file__)) 

या आप निर्देशिका है जहाँ से स्क्रिप्ट लागू किया गया था चाहते हैं

__file__, फ़ाइल जहाँ से मॉड्यूल लोड किया गया था के पथ नाम है यदि यह लोआ था एक फाइल से समर्पित

कैसे स्क्रिप्ट कहा जाता है के आधार पर, इस os.getcwd() से एक रिश्तेदार पथ हो सकता है, इसलिए os.path.realpath(__file__) एक निरपेक्ष पथ में कनवर्ट कर (या कुछ भी नहीं __file__ है पहले से ही एक निरपेक्ष पथ है) होगा। os.path.dirname() तो फ़ाइल नाम बंद अलग करना द्वारा पूर्ण निर्देशिका वापस आ जाएगी।

+0

आप 'पथ (__ फ़ाइल __) के माध्यम से 'पथ' ऑब्जेक्ट प्राप्त कर सकते हैं। संकल्प()। Parent'। – Tyler

1

यह काम करना चाहिए:

import os,sys 
print(os.path.dirname(os.path.realpath(sys.argv[0]))) 
संबंधित मुद्दे