Python能够检测它运行在哪个操作系统下吗?

10

Python是否可以检测操作系统,然后构建一个用于文件系统的if/else语句。

我需要使用FileSys字符串替换Fn字符串中的C:\ CobaltRCX \。

import os.path, csv
from time import strftime

if os.path.?????:## Windows
   FileSys = r"C:\\working\\" 
else:   ##linux   
   FileSys = r"\\working\\" 

y=(strftime("%y%m%d"))
Fn = (r"C:\\working\\Setup%s.csv" %y)

4
这是一个询问Python代码如何判断当前操作系统的问题。在Python中,可以使用内置的os模块来获取当前操作系统的名称。调用os.name将返回操作系统的名称,其中'posix'表示类Unix操作系统(包括Linux和Mac OS X),而'nt'表示Windows操作系统。 - Anders
platform.system() == platform.uname()[0] == 'Windows' - Mawg says reinstate Monica
10个回答

22

我通常只使用这个:

import os
if os.name == 'nt':
    pass # Windows
else:
    pass # other (unix)

编辑:

希望回应您的评论:

from time import strftime
import os

if os.name == 'nt': # Windows
    basePath = 'C:\\working\\'
else:
    basePath = '/working/'

Fn = '%sSetup%s.csv' % ( basePath, strftime( '%y%m%d' ) )

2
啥?你这是什么意思? - poke
Fn字符串为"C:\working\Setup%s.csv."。第二个变量应该怎么写?第一个是文件系统,第二个是日期。现在我已经设置好了日期,需要帮助设置"filesys"和"date"的字符串。谢谢。 - Merlin
1
不确定我是否已经通过我的编辑回答了它,但我真的不明白。请尽量使用全面的英语解释。 - poke
当然可以,抱歉。如果您的路径变得更加复杂,您也可以使用os.path来连接多个路径序列。 - poke

6

5

1

是的。

>>> import os
>>> os.uname()
('Linux', 'ubuntu', '2.6.32-27-generic', '#49-Ubuntu SMP Thu Dec 2 00:51:09 UTC 2010', 'x86_64')
>>> system = os.uname()
>>> print system[0] + '/' + system[1]
Linux/ubuntu
>>> 

1

try this one:

    import platform
    platform.uname()

它可以在Linux和Windows上运行。顺便说一句:os.uname()在Windows上不起作用,但在Linux上可以。平台是通用的。


1
晚了一些,但如果你想确定路径分隔符,可以使用
os.path.sep

0

对于大多数用例,您应该使用{{link1:os.platform}}模块。但是,如果您需要更精简的接口,请尝试{{link2:platinfo}}。


0

你可以看一下 os.uname

In [12]: os.uname()
Out[12]: 
('Darwin',
 'demitasse.local',
 '10.6.0',
 'Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386',
 'i386')

0

这是我前几天刚刚创建的:

代码:

def GetUserPlatform():
    if sys.platform == 'win32':
        UsrWinVer = str(sys.getwindowsversion().major)
        print("Operating System: Windows " + UsrWinVer)
    else:
        print("Something else")

GetUserPlatform()

输出:

操作系统:Windows 10


platform.system()sys.platform更一致/可靠。请参见https://dev59.com/qXVD5IYBdhLWcg3wXacd#1857。 - Charles L.

0
import platform
print(platform.uname().system)

这将为您提供Windows,Linux等操作系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接