11

如何从 Python [3.3] 中找到正在运行的 Python 脚本的目录?我已经尝试过以下建议:如何使用 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)
4

3 回答 3

43

要获取包含您正在运行的模块的目录:

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

或者,如果您想要调用脚本的目录:

import os
path = os.getcwd()

文档

__file__是从文件中加载模块的文件的路径名(如果它是从文件中加载的)。

根据脚本的调用方式,这可能是来自 的相对路径os.getcwd(),因此os.path.realpath(__file__)会将其转换为绝对路径(或者什么都不做,因为__file__它已经是绝对路径)。 os.path.dirname()然后将通过剥离文件名返回完整目录。

于 2013-10-11T16:31:40.003 回答
1

尝试这个:

import os
os.path.dirname(__file__)

__file__获取您所在文件的名称。该dirname函数获取文件所在的目录。

语法错误可能与 print 语句有关。在 python 3.x 中

print "hi"

是无效的。打印现在是一个功能。

print("hi")

作品。你需要括号。

于 2013-10-11T16:25:35.690 回答
1

这应该有效:

import os,sys
print(os.path.dirname(os.path.realpath(sys.argv[0])))
于 2015-06-14T16:05:20.500 回答