python获取调用者文件名
时间: 2023-08-18 14:13:00 浏览: 318
要获取 Python 中调用者的文件名,可以使用 `__file__` 变量。这个变量包含当前模块的文件名路径。
以下是一个示例:
```python
import os
def get_caller_filename():
# 获取调用者的文件名
caller_frame = inspect.stack()[1]
caller_filename = caller_frame.filename
return os.path.basename(caller_filename)
# 调用函数并打印调用者的文件名
print("Caller filename:", get_caller_filename())
```
在这个示例中,我们使用 `inspect.stack()` 函数来获取调用栈信息,`[1]` 表示获取调用者的栈帧。然后,我们从栈帧中提取调用者的文件名,并使用 `os.path.basename()` 函数获取文件名的最后一部分。
请注意,这种方法只能获取到直接调用当前函数的文件名。如果函数是通过间接方式(例如由其他函数调用)被调用的,那么它将返回间接调用者的文件名。
希望以上信息对你有帮助!如果还有其他问题,请随时提问。
相关问题
python中某一文件调用了执行文件,如何获取该文件名
您可以使用Python内置的inspect模块中的getframeinfo函数来获取正在执行的文件的文件名。在调用的文件中导入inspect模块并调用getframeinfo函数即可。 以下是示例代码:
```python
import inspect
def get_calling_file_name():
# 获取调用者的栈帧信息
frame_info = inspect.getframeinfo(inspect.currentframe().f_back)
# 返回文件名
return frame_info.filename
```
然后,您可以调用get_calling_file_name()函数来获取正在执行的文件的文件名。例如:
```python
calling_file_name = get_calling_file_name()
print(calling_file_name)
```
请注意,这种方法只返回调用文件的文件名,而不是执行文件的文件名。如果您需要获取执行文件的文件名,您需要在执行文件中手动指定并传递该文件名,然后在调用文件中将其提取出来。
python,主文件a.py,import b,在b里import c,c里有函数d,d的作用是获取a的路径和文件名,并复制到path
好的,这个问题可以通过以下方式解决:
在函数 `d` 中,可以使用以下代码获取 `a.py` 的路径和文件名,并将其复制到 `path` 目录下:
```python
import shutil
import os
import inspect
def d():
caller_file = inspect.stack()[1].filename # 获取调用者文件的绝对路径
src_file = os.path.abspath(caller_file)
dst_dir = os.path.abspath('path')
shutil.copy(src_file, dst_dir)
```
这里使用了 `inspect` 模块中的 `stack` 函数来获取调用者的文件路径,然后使用 `os` 模块中的 `abspath` 函数来获取 `a.py` 的绝对路径。最后,使用 `shutil` 模块中的 `copy` 函数将其复制到指定的目录下。需要注意的是,这里的 `path` 应该是一个实际存在的目录路径,否则会抛出异常。
阅读全文