我正在尝试迭代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
模块返回的原因就这样?
答案 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
的路径始终严重反向。