Как найти каталог 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])))