Σκεφτείτε τον ακόλουθο κώδικα Python:
import os
print os.getcwd()
Χρησιμοποιώ την os.getcwd()
για να πάρω τη θέση του καταλόγου του αρχείου του σεναρίου. Όταν τρέχω το σενάριο από τη γραμμή εντολών μου δίνει τη σωστή διαδρομή ενώ όταν το τρέχω από ένα σενάριο που εκτελείται από κώδικα σε μια προβολή Django εκτυπώνει /
.
Πώς μπορώ να πάρω τη διαδρομή προς το σενάριο από ένα σενάριο που εκτελείται από μια προβολή Django;
ΠΡΟΗΓΗΣΗ:<br>,
Συνοψίζοντας τις απαντήσεις μέχρι στιγμής - το os.getcwd()
και το os.path.abspath()
δίνουν και τα δύο τον τρέχοντα κατάλογο εργασίας, ο οποίος μπορεί να είναι ή να μην είναι ο κατάλογος όπου βρίσκεται το σενάριο. Στην εγκατάσταση του web host μου, το
δίνει μόνο το όνομα του αρχείου χωρίς τη διαδρομή.__file__
Δεν υπάρχει κάποιος τρόπος στην Python να μπορεί (πάντα) να λαμβάνει τη διαδρομή στην οποία βρίσκεται το σενάριο;
Χρησιμοποιώ:
import os
import sys
def get_script_path():
return os.path.dirname(os.path.realpath(sys.argv[0]))
Όπως επισημαίνει ο aiham σε ένα σχόλιο, μπορείτε να ορίσετε αυτή τη συνάρτηση σε μια ενότητα και να τη χρησιμοποιήσετε σε διαφορετικά σενάρια.
import os,sys
# Store current working directory
pwd = os.path.dirname(__file__)
# Append current directory to the python path
sys.path.append(pwd)