2013-10-11 161 views
10

如何从Python [3.3]中找到正在运行的Python脚本的目录? 我尝试了什么建议在:How can I find script's directory with Python?,但我得到“无效的语法”,并指向“操作系统”(我没有进口操作系统)。如何从脚本中查找Python运行脚本的目录?

最接近我得到的答案是: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) 
+0

您可以发布您确切的代码,你会得到确切的错误?你链接的答案听起来像它应该为你工作。 –

回答

-8

您的snytax必须关闭。

import os 
cwd = os.getcwd() 

它适用于Unix和Windows:如果你使用它的权利os.getcwd应该工作。

确保语法正确,并且像上面一样使用它。

+7

请注意,这会获取当前的工作目录,该目录可能是也可能不是包含该脚本的目录。如果你真正想要的是包含脚本文件的目录,那么这将是相当脆弱的。假设您在其他目录中,并使用其绝对路径执行脚本。 getcwd将不会返回脚本路径。 –

1

试试这个:

import os 
os.path.dirname(__file__) 

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

的语法错误可能有与打印statemen做吨。在python 3.x中

print "hi" 

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

print("hi") 

工程。你需要括号。

39

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

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

或者,如果你想从脚本被调用的目录:

import os 
path = os.getcwd() 

docs

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

根据脚本是如何被调用,这可能是从os.getcwd()相对路径,所以os.path.realpath(__file__)将其转换为绝对路径(或者什么也不做是__file__已经是绝对路径)。 os.path.dirname()将通过删除文件名返回完整的目录。

+0

你可以通过Path(__ file __)。resolve()。parent'获得'Path'对象。 – Tyler

1

这应该工作:

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