2011-04-02 111 views
1

(上WindowsXP的Python2.7-3.2) 我曾经使用sys.arg [0],但我现在从批处理脚本执行它(用于确定用户是否具有蟒)有没有办法告诉你的python文件在哪里?

感谢^^

〜PS:建议如果你知道一个更好的方法来找出用户是否有Python的

+0

嗯?如果你正在运行一个Python脚本,那么显然用户有Python! – 2011-04-02 22:56:08

回答

7

也许你正在寻找

os.path.dirname(__file__) 
+0

非常感谢您的先生! – Property404 2011-04-02 20:18:15

1

可以读取变量__file__找出路径当前的Python fi被解释。

+2

它是'__file__',而不是'__FILE__'。 – 2011-04-02 20:25:45

+0

你是对的,我偶然混淆了C++的。 :) – Amber 2011-04-02 23:35:57

0
os.path.normpath(os.path.abspath(os.path.dirname(__file__))) 
0

,你可以看看这个帖子,检查注册表

batch file to check if Python is installed

似乎容易,因为:

REG查询 “HKCU \ SOFTWARE \的Python 2.6”

另一种方法是检查%PATH%。我不知道如何做到这一点,因为没有安装的窗口来测试它:)

尝试了解更多关于“reg query”以及如何搜索%PATH%的可执行文件!

祝你好运!

+0

这不回答被问到的问题。 – 2011-04-02 21:26:58

+0

不,但它回答了我问到的PS问题,Bryan。谢谢你,奥比。但是你知道如何为python3做?它似乎列表中的Python2 reg注册查询“hkcu \软件” – Property404 2011-04-02 21:38:10

0

为了增加这一点,尽管它已经回答了,这里是我从该网站得到了(不记得源)

import os, sys 
print "CWD: ", os.getcwd() 
print "Script: ", sys.argv[0] 
print ".EXE: ", os.path.dirname(sys.executable) 
print "Script dir: ", os.path.realpath(os.path.dirname(sys.argv[0])) 
pathname, scriptname = os.path.split(sys.argv[0]) 
print "Relative script dir: ", pathname 
print "Script dir: ", os.path.abspath(pathname) 
print 'Current file: ', os.path.dirname(__file__) 
print os.path.dirname(__file__) + '/IDLESTARTUP.txt' 
相关问题