当前位置: 首页 > 面试题库 >

查找当前运行文件的路径

屈翰飞
2023-03-14
问题内容

如何找到当前正在运行的Python脚本的完整路径?就是说,我要做什么才能做到这一点:

$ pwd
/tmp
$ python baz.py
running from /tmp 
file is baz.py

问题答案:

__file__ 不是您要找的东西。不要使用意外的副作用

sys.argv[0]永远 的脚本路径(如果事实上脚本已经调用)
-见http://docs.python.org/library/sys.html#sys.argv

__file__当前正在执行的 文件(脚本或模块)的路径。这是 偶然
一样的,如果它是从脚本访问的脚本!如果要将诸如相对于脚本位置的资源文件定位到库中的有用操作,则必须使用sys.argv[0]

例:

C:\junk\so>type \junk\so\scriptpath\script1.py
import sys, os
print "script: sys.argv[0] is", repr(sys.argv[0])
print "script: __file__ is", repr(__file__)
print "script: cwd is", repr(os.getcwd())
import whereutils
whereutils.show_where()

C:\junk\so>type \python26\lib\site-packages\whereutils.py
import sys, os
def show_where():
    print "show_where: sys.argv[0] is", repr(sys.argv[0])
    print "show_where: __file__ is", repr(__file__)
    print "show_where: cwd is", repr(os.getcwd())

C:\junk\so>\python26\python scriptpath\script1.py
script: sys.argv[0] is 'scriptpath\\script1.py'
script: __file__ is 'scriptpath\\script1.py'
script: cwd is 'C:\\junk\\so'
show_where: sys.argv[0] is 'scriptpath\\script1.py'
show_where: __file__ is 'C:\\python26\\lib\\site-packages\\whereutils.pyc'
show_where: cwd is 'C:\\junk\\so'


 类似资料:
  • 问题内容: 我使用Go在各种平台上编译了一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它。 是否可以找出可执行文件在哪里? 说,我的程序称为“ ()”。我可以运行,(如果它在PATH中)。 我尝试使用,我想我应该检查程序名称是否包含除“ foo”以外的其他内容。如果是,请使用,如果否,请使用(我找不到函数名,有一个通过PATH查找以检查程序在哪里的函数)。 问题答案:

  • 我正在创建一个eclipse插件,需要检索当前工作区窗口中打开的所有文件的路径/文件名。 我编写的代码成功地检索了当前打开的java文件的文件名,但无法检索所有其他文件类型(如xml、jsp、css等)的路径/文件。 到目前为止,我使用的代码是:- 我需要的帮助是——检索当前打开的工作区/编辑器中所有打开的文件(任何文件类型)的(文件路径文件名)。上面的代码只能获取当前编辑器中打开的Java类的文

  • 问题内容: 在Python中,我可以使用哪些命令来查找: 1.当前目录(运行Python脚本时我在终端中的位置) 2.我正在执行的文件在哪里? 问题答案: 要获取包含Python文件的目录的完整路径,请在该文件中写入以下内容: (请注意,如果你已经习惯于更改当前的工作目录,则上述方法将不起作用,因为常量的值是相对于当前的工作目录而言的,并且不会被调用更改。) 要获取当前的工作目录,请使用 上面使用

  • 如何在 PyCharm 中运行当前文件?我想要一个热键,它将使用项目默认的 python 解释器执行当前文件(无论是普通文件、暂存文件还是暂存缓冲区)。我不想创建自定义运行配置,而只需使用默认的 Python 配置启动即可。这样的事情可能吗?

  • #include <stdio.h> #include <time.h> int main(void) { time_t now = time(NULL); struct tm local = {0}; struct tm gmt = {0}; localtime_r(&now, &local); gmtime_r

  • 我创建了这个数组位置。昨天的爪哇 今天我创建了一个新项目并添加了这个MyDisplay。爪哇 但当我运行我的显示器时。java eclipse仍在运行旧的ArrayLocation。java和32.9。我以为它会打开一个空白的小程序。 请帮帮我我是个新手 我应该如何告诉eclipse运行MyDisplay。java而不是ArrayLocation。JAVA