inspect.stack()使用斜杠和反斜杠返回路径值

时间:2014-01-15 10:08:00

标签: python inspect

我正在尝试迭代inspect.stack()以获取文件层次结构。

一个简单的例子:

for value in inspect.stack():
    print value[1]

输出结果为:

C:\xxx\ATE\Utilities\Simulator\Simulator.py
C:\xxx\ATE\Utilities\Simulator\Simulator.py
C:\xxx\ATE\Utilities\Simulator\serial.py
C:\xxx\ATE\Utilities\Serial\SerialHandle\trunk\SerialHandle.py
C:/xxx/ATE/DUTDrivers/DD_SimulatorExample/DD_Example_Simulator.py

现在我正在使用字符串操作删除文件名,并使用我的软件中的路径名。

问题:

为什么有一些带斜杠(\)的路径和一些带反斜杠(/)的路径?

注意:我知道我可以使用replace进行简单的字符串操作来将反斜杠替换为斜杠或仅使用os.path.normpath(path)但我试图了解inspect.stack模块返回的原因就这样?

1 个答案:

答案 0 :(得分:2)

似乎PyCharm使用完整路径和正斜杠(/)启动DD_Example_Simulator.py

这就是为什么你只在DD_Example_Simulator.py路径中看到正斜杠(其余的路径是由Python解释器构建的,因此有适当的Windows反斜杠)。作为旁注:在Windows上使用正斜杠完全可以。好吧,至少我的Windows副本并不介意正斜杠。

让我们使用cmd.exe进行过期。

让我们创建两个文件。

首先:

// inspectso.py
import inspect

for value in inspect.stack():
    print value[1]

第二

// inspect_so.py
import inspectso

过期的最后一步:在cmd中运行这些命令:

e:\Temp>c:/Python27/python.exe E:/temp/inspect_so.py
E:\temp\inspectso.py
E:/temp/inspect_so.py

e:\Temp>c:/Python27/python.exe E:\temp\inspect_so.py
E:\temp\inspectso.py
E:\temp\inspect_so.py

e:\Temp>c:/Python27/python.exe inspect_so.py
e:\Temp\inspectso.py
inspect_so.py

我们可以看到inspect_so.py的路径在命令行传递时打印,inspectso.py的路径始终严重反向。