Python中如何获取当前执行文件的路径? [复制]

2024-03-15

有没有普遍的Python中的方法,找出当前正在执行的文件的路径?

失败的方法

path = os.path.abspath(os.path.dirname(sys.argv[0]))

如果您从另一个目录中的另一个 Python 脚本运行,例如使用execfile in 2.x.

path = os.path.abspath(os.path.dirname(__file__))

我发现这在以下情况下不起作用:

  • py2exe没有__file__属性,虽然有解决方法 http://www.py2exe.org/index.cgi/WhereAmI
  • 当代码运行时IDLE https://en.wikipedia.org/wiki/IDLE using execute(),在这种情况下没有__file__属性
  • On Mac OS X v10.6 https://en.wikipedia.org/wiki/Mac_OS_X_Snow_Leopard(雪豹),我明白了NameError: global name '__file__' is not defined

测试用例

目录树

C:.
|   a.py
\---subdir
        b.py

内容a.py

#! /usr/bin/env python
import os, sys

print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print "a.py: os.getcwd()=", os.getcwd()
print

execfile("subdir/b.py")

内容subdir/b.py

#! /usr/bin/env python
import os, sys

print "b.py: sys.argv[0]=", sys.argv[0]
print "b.py: __file__=", __file__
print "b.py: os.getcwd()=", os.getcwd()
print

输出python a.py(在 Windows 上)

a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz

b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz

相关(但这些答案不完整)

  • 查找当前运行文件的路径 https://stackoverflow.com/questions/1296501/
  • 当前文件的路径取决于我如何执行程序 https://stackoverflow.com/questions/1483827/
  • 如何知道Python中运行脚本的路径? https://stackoverflow.com/questions/2259503/
  • 将目录更改为Python脚本的目录 https://stackoverflow.com/questions/509742/

首先,您需要从以下位置导入inspect and os

from inspect import getsourcefile
from os.path import abspath

接下来,无论您想从哪里找到源文件,只需使用

abspath(getsourcefile(lambda:0))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中如何获取当前执行文件的路径? [复制] 的相关文章

随机推荐

  • 如何创建从左下角到右上角的动态对角线?

    我创建了一个简单的布局 其中有三个可以交互的 div 一个是屏幕中间的徽标 另一个是使用 jQuery 将两个块移出屏幕 我用的是skewCSS 中应用度数转换的选项 我想根据屏幕应用一定的程度 因此该程度将正确应用于所有屏幕 视觉示例 h
  • 如何使用TabNavigator的tabBarComponent?标签栏不显示

    我正在尝试制作自己的自定义选项卡栏 似乎 tabBarComponent 是通过设置为我自己的组件来实现此目的的方法 使用下面的代码我的标签栏不会显示 const TabNav TabNavigator LaunchScreen scree
  • 查询SQL Server上存储过程的内容

    我正在探索一个遗留数据库系统 对其内部结构知之甚少 我想找到调用另一个存储过程的所有存储过程A 如何最好地做到这一点 我可以写这样的伪代码吗 select name from AllStoredProcedures as Asp where
  • 为什么 C++ 中必须声明函数,而 C 中则不然?

    所以我之前的一次考试有这个问题 到目前为止我一直在读你不需要任何语言的声明 哪个是对的 如果没有声明 C 会报错还是会运行 在涉及 C 和 C 的讨论中 函数声明 是一个相当模糊的术语 这些语言在这方面有很大不同 在C 语言中只有一种函数声
  • javascript、getelementsbyname 和焦点

    我正在尝试创建一个函数 该函数将查看用户名 如果无效 然后向用户发送警报 清除用户名字段 然后将用户名字段重新置于焦点中 我正在尝试使用 getElementsBynName 函数来完成这一切 除了让现场重新成为焦点之外 一切都在进行 我的
  • Theano.function 中“给定”变量的用途

    我正在阅读以下给出的逻辑函数的代码http deeplearning net tutorial logreg html http deeplearning net tutorial logreg html 我对之间的区别感到困惑inputs
  • 如何正确等待浏览器重排/重绘完成

    假设我有一个复杂的 HTML 组件 我想要为其设置动画 但每次需要设置动画时 都需要完成几件事 例如渲染新的 HTML 组件 设置高度 附加 css 类等 如果动画在浏览器重排 重绘过程中触发 这可能会导致动画不平滑 我可以使用 setTm
  • 合并 JSON 对象数组并使用 Javascript 进行排序

    我有一个包含 12 个数组的 JSON 对象 国家不同地区 我正在尝试将此数组合并到选择下拉菜单中 JSON 看起来像这样 latinamerica Argentina Bolivia Brazil Chile Colombia Ecuad
  • 未找到 Laravel 自定义特征

    我对特质很陌生 但我想尝试一下 但是 它似乎没有加载 我在 Laravel 应用程序目录下的文件夹中创建了一个名为 CheckPermsAgainstObjectTrait php 的特征 app Helpers 这是特征代码
  • TypeError:无法读取未定义的属性“map” - 如何访问本地 json API 中的数组

    我能够使用 fetch 在本地导入 api JSON 该 api 可在this http www recipepuppy com apiurl 如果你想查看它 问题如下 当传递状态 searchString 时 出现以下错误 类型错误 无法
  • 在视图中尝试捕获是不好的做法吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 MVC3 应用程序中 在 razor 块内使用 try catch 块是否被认为是不好的做法 in the cshtml view 非常如此
  • 在 Swift 1.1 中重写初始值设定项的正确方法

    这曾经在 Xcode 6 1 beta 中工作 class MainViewController NSViewController convenience override init self init nibName MainView b
  • 生成随机颜色

    我正在使用此代码生成随机颜色 工作正常 r rand 128 255 g rand 128 255 b rand 128 255 color dechex r dechex g dechex b return color 我只是想知道是否有
  • Flash,ActionScript 3:获取影片剪辑中包含的所有影片剪辑

    以免说我有一个 movieClip A 其中包含 movieClip B1 B2 B3 B4 B5 我在 A 中编写代码来接收 a 包含的所有影片剪辑并打印名称 我尝试了这个但没有成功 for each a MovieClip in thi
  • Supertest 在 Node 中进行 Jest 测试时给出 MaxListenersExceedingWarning 错误

    我正在努力使用 Jest 和 Supertest 以及我的 Node Express 应用程序来设置一些测试 我还使用 Sentry 来报告我的错误 我的 app js 文件中有以下几行代码来设置 Sentry app js Sentry
  • 读取具有定义格式的二进制文件的最快方法?

    我有具有预定义格式的大型二进制数据文件 最初由 Fortran 程序以小端方式编写 我想以最快 最有效的方式读取这些文件 因此使用array https docs python org 3 library array html包裹似乎正合我
  • 无法使用 eclipse 在 Java 中进行调试

    我正在尝试使用 Eclipse 作为 IDE 在我的机器上调试一个简单的 Java 应用程序 当我尝试通过进入调试视角来调试应用程序时 我设置了一个断点并开始调试 几秒钟之内 弹出如下窗口 Launching unicodeRead has
  • 为什么 `/\:/u` 会抛出“无效转义”错误? [复制]

    这个问题在这里已经有答案了 我有这样的代码 url match https ui ESLint 说Parsing error Invalid regular expression https Invalid escape 我不明白为什么这个
  • std::复制二维数组

    您好 我正在尝试使用 std copy 函数来复制二维数组 我想知道是否可以这样做 我不断收到 分段错误 但数组复制正确 我尝试减去一些并添加一些到复制功能的最终情况 但没有成功 const int rows 3 const int col
  • Python中如何获取当前执行文件的路径? [复制]

    这个问题在这里已经有答案了 有没有普遍的Python中的方法 找出当前正在执行的文件的路径 失败的方法 path os path abspath os path dirname sys argv 0 如果您从另一个目录中的另一个 Pytho