Как найти каталог Python с запуском script из script?
Как найти каталог запущенного Python script изнутри Python [3.3]?
Я пробовал то, что было предложено: Как я могу найти каталог script с Python?, но я получаю "Недопустимый синтаксис" и перенаправлен на "os" ( И я импортировал os).
Ближайшим я получил ответ: sys.argv [0], но это все еще включает имя файла, поэтому я не могу его использовать. Есть ли другой способ?
Примечание:
Я новичок в Python.
Вот какой-то код, который я сделал до сих пор (часть, где указано 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)
Ответы
Ответ 1
Ваш snytax должен быть выключен. os.getcwd
должен работать, если вы используете его правильно:
import os
cwd = os.getcwd()
Он работает как с Unix, так и с Windows.
Убедитесь, что синтаксис верен и вы используете его, как указано выше.
Ответ 2
Чтобы получить каталог, содержащий модуль, который вы используете:
import os
path = os.path.dirname(os.path.realpath(__file__))
Или, если вы хотите, чтобы каталог, из которого был вызван script:
import os
path = os.getcwd()
Из docs:
__file__
- это путь к файлу, из которого был загружен модуль, если он был загружен из файла.
В зависимости от того, как вызывается script, это может быть относительный путь от os.getcwd()
, поэтому os.path.realpath(__file__)
преобразует это в абсолютный путь (или ничего не делает, что __file__
уже является абсолютным путем), os.path.dirname()
затем вернет полный каталог, отменив имя файла.
Ответ 3
Попробуйте следующее:
import os
os.path.dirname(__file__)
__file__
получает имя файла, в котором вы находитесь. Функция dirname
получает каталог, в котором находится файл.
Синтаксическая ошибка, вероятно, связана с оператором печати. В python 3.x
print "hi"
неверно. Печать теперь является функцией.
print("hi")
работает. Вам нужны скобки.
Ответ 4
Это должно работать:
import os,sys
print(os.path.dirname(os.path.realpath(sys.argv[0])))