【发布时间】:2013-08-10 21:44:39
【问题描述】:
我想要我的项目,内置于 PYTHON 中,以在任何终端(MAC、CYGWIN、Windows 等)中支持 Windows Linux MAC。我可以实现,但是当我运行以下命令时遇到了一些问题
import os
mypath = os.path.join('users','scripts', 'pythonsample')
print mypath
在windows命令提示符输出是
users\scripts\pythonsample
在MAC终端输出是
users/scripts/pythonsample
另外,当我运行以下代码时
import glob
glob.glob(os.path.join('users','scripts', 'pythonsample','*.*'))
在windows命令提示符输出是
[users/scripts\\pythonsample\\a1.py,
users/scripts\\pythonsample\\a2.py,
users/scripts\\pythonsample\\a3.py
users/scripts\\pythonsample\\a4.py]
在MAC终端输出是
[users/scripts/pythonsample/a1.py,
users/scripts/pythonsample/a2.py,
users/scripts/pythonsample/a3.py
users/scripts/pythonsample/a4.py]
所以在多个平台上解析和获取没有完整路径的文件名变得很困难。
我可以编写一个 if else 块来决定脚本是在 Windows、MAC 还是 CGYWIN 中运行。
import sys
#Output of below command is Win32, linux2, darwin, cgywin
print(sys.platform)
但是有没有一种简单的方法可以在没有 if else 阻塞的情况下完成此操作?
【问题讨论】:
-
您真正想要的输出是什么?即使在 Windows 上,您也想要 POSIX 样式的路径吗?您是否希望始终获得 Windows 风格的路径,而不是仅在大多数情况下在 Windows 上获得?还是有什么不同?而且,最重要的是,请解释为什么你想要那个。你目前得到的有什么问题?
-
如果 glob.glob(somepath) 输出在整个操作系统中是相同的,那么我可以使用 string.split('\\') 分割路径。我将不得不将其更改为 Windows 中的 string.split('\\') MAC 中的 string.split('/')。
-
你为什么使用
string.split?你已经在使用os.path;也可以使用它的方法来拆分东西!
标签: python parsing python-2.7 operating-system