Python 获取py文件自己的名字

引言

在开发Python应用程序时,有时需要获取当前运行的.py文件的名字。这在很多场景下都是有用的,例如需要基于文件名进行一些逻辑判断或打印日志等。本文将介绍几种获取.py文件名的方法,并提供相应的代码示例。

方法一:使用__file__属性

Python中的每个模块都有一个内置的__file__属性,该属性保存了模块文件的路径信息。利用这个属性,我们可以获取当前运行的.py文件的绝对路径,然后从中提取文件名。

下面是一个示例代码:

import os

# 获取当前脚本的绝对路径
script_path = os.path.abspath(__file__)

# 获取当前脚本的文件名
script_name = os.path.basename(script_path)

# 打印文件名
print(f"当前脚本的文件名为:{script_name}")

输出结果为:

当前脚本的文件名为:example.py

方法二:使用inspect模块

Python的inspect模块提供了一些有关解释器内部数据和活动的函数。通过该模块,我们可以获取函数、类、方法、模块等对象的信息。其中,inspect.currentframe()函数可以获取当前运行的帧对象,而frame.f_code.co_filename属性则保存了当前帧对应的文件名。

下面是一个示例代码:

import inspect

# 获取当前帧对象
frame = inspect.currentframe()

# 获取当前帧对应的文件名
filename = inspect.getframeinfo(frame).filename

# 从文件名中提取文件名部分
script_name = os.path.basename(filename)

# 打印文件名
print(f"当前脚本的文件名为:{script_name}")

输出结果为:

当前脚本的文件名为:example.py

方法三:使用sys模块

Python的sys模块提供了访问与Python解释器及其环境有关的变量和函数。其中,sys.argv保存了命令行参数的列表,其中第一个元素是脚本文件的路径。利用这个特性,我们可以获取当前运行的.py文件的路径,并从中提取文件名。

下面是一个示例代码:

import sys
import os

# 获取脚本文件的路径
script_path = sys.argv[0]

# 获取脚本文件的文件名
script_name = os.path.basename(script_path)

# 打印文件名
print(f"当前脚本的文件名为:{script_name}")

输出结果为:

当前脚本的文件名为:example.py

总结

本文介绍了三种获取当前运行的.py文件名的方法,并给出了相应的代码示例。无论是使用__file__属性、inspect模块还是sys模块,我们都可以轻松地获取到当前脚本的文件名。在实际应用中,我们可以根据这个文件名进行一些逻辑判断或打印日志等操作。

希望本文对你在Python开发中获取.py文件名有所帮助!

关系图

下面是一个使用mermaid语法绘制的关系图,展示了各个模块之间的关系。

erDiagram
    PY文件 --|> sys模块
    PY文件 --|> inspect模块
    PY文件 --|> os模块
    inspect模块 --|> frame
    sys模块 --|> argv
    frame --|> filename
    os模块 --|> abspath
    os模块 --|> basename

参考文献

  • [Python官方文档 - 模块inspect](
  • [Python官方文档 - 模块sys](
  • [Python官方文档 - 模块os](