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

时间:2013-10-11 16:21:26

标签: python directory

如何从Python [3.3]中找到正在运行的Python脚本的目录? 我已经尝试了在How can I find script's directory with 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)

3 个答案:

答案 0 :(得分:41)

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

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

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

import os
path = os.getcwd()

来自docs

  

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

根据脚本的调用方式,这可能是os.getcwd()的相对路径,因此os.path.realpath(__file__)会将此转换为绝对路径(或者__file__已经无效一条绝对的道路)。然后,os.path.dirname()将通过删除文件名返回完整目录。

答案 1 :(得分:1)

试试这个:

import os
os.path.dirname(__file__)

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

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

print "hi"

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

print("hi")

的工作原理。你需要括号。

答案 2 :(得分:1)

这应该有效:

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