如何从脚本中找到Python运行脚本的目录?

How do I find directory of the Python running script from inside the script?

如何从python[3.3]内部找到运行python脚本的目录?我尝试过上面的建议:如何用python找到脚本的目录?但我得到了"无效语法"并指向"OS"(我确实导入了OS)。

我得到的最接近答案是:sys.argv[0],但它仍然包含文件名,所以我不能使用它。还有别的办法吗?

注:我对Python还比较陌生。

下面是我迄今为止所做的一些代码(其中指出rundir=sys.argv[0]的部分是建议代码的位置):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
2
import os
path = os.path.dirname(os.path.realpath(__file__))

或如果你想从脚本的目录:什么invoked

1
2
import os
path = os.getcwd()

从文档:

__file__ is the pathname of the file from which the module was loaded, if it was loaded from a file.

取决于如何脚本是所谓的,这可能是一个相对路径转换os.path.realpath(__file__)os.getcwd()这样想,这一个绝对路径(或__file__已经做什么是绝对路径)。os.path.dirname()然后返回完整的目录和文件名通过剥离。


这应该工作。

1
2
import os,sys
print(os.path.dirname(os.path.realpath(sys.argv[0])))


试试这个:

1
2
import os
os.path.dirname(__file__)

__file__获取文件的名称,你是在。在dirname函数得到,这是在文件的目录。

《语法错误可能不得不做的print语句。在Python 3.x

1
print"hi"

是无效的。印刷现在是一个函数。

1
print("hi")

的作品。你需要周围的括号。