Tôi cần xem xét điều gì nếu tôi đang sử dụng Windows, Unix, v.v ...?Python: Tôi đang chạy hệ điều hành nào?
Trả lời
>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'
Kết quả của platform.system()
là như sau:
- Linux:
Linux
- Mac:
Darwin
- Windows:
Windows
Xem:
Tại sao tôi nên thích 'nền tảng' hơn' sys.platform'? – matth
@matth Đầu ra phù hợp hơn một chút. nghĩa là 'platform.system()' trả về '" Windows "' thay vì '" win32 "'. 'sys.platform' cũng chứa' "linux2" 'trên các phiên bản cũ của Python trong khi nó chỉ chứa' "linux" 'trên các phiên bản mới hơn. 'platform.system()' đã luôn trả về chỉ là "" Linux "'. – erb
Trên mac os X, platform.system() luôn trả về "Darwin"? hoặc là có trường hợp khác có thể? –
Dang - lbrandy đánh tôi với cú đấm, nhưng điều đó không có nghĩa là tôi không thể cung cấp cho bạn kết quả hệ thống cho Vista!
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'
... và tôi không thể tin rằng không ai của đăng một dành cho Windows 10 được nêu ra:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Windows 7: 'platform.release()' ''7'' – Hugo
Vì vậy, vâng, tôi chỉ chạy' platform.release() 'trên * Windows * * 10 * của tôi, và nó chắc chắn chỉ cho tôi' '8' '. Có lẽ tôi đã cài đặt python trước khi nâng cấp, nhưng thực sự ?? – Codesmith
Tôi đã nghĩ rằng nó có nhiều khả năng bạn nâng cấp từ Windows 8 (so với nó là một cài đặt sạch) và bất cứ điều gì Python nhìn lên trong registry hoặc bất cứ điều gì đã bị bỏ lại phía sau? – OJFord
Đối với hồ sơ đây là kết quả trên Mac:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Bạn có thể cũng sử dụng sys.platform nếu bạn đã nhập sys và bạn không muốn nhập một mô-đun khác
>>> import sys
>>> sys.platform
'linux2'
Có cách nào trong các phương pháp tiếp cận có bất kỳ lợi thế nào, ngoài việc có hay không nhập mô-đun khác? – matth
Phạm vi là lợi thế chính. Bạn muốn càng ít tên biến toàn cầu càng tốt. Khi bạn đã có "sys" dưới dạng tên chung, bạn không nên thêm tên khác. Nhưng nếu bạn chưa sử dụng "sys", việc sử dụng "_platform" có thể mang tính mô tả hơn và ít có khả năng va chạm với một ý nghĩa khác. – sanderd17
Tôi làm điều này
import sys
print sys.platform
Documents ở đây: sys.platform.
Mọi thứ bạn cần có thể nằm trong mô-đun sys.
Tôi đang sử dụng công cụ WLST đi kèm với weblogic và không triển khai gói nền tảng.
wls:/offline> import os
wls:/offline> print os.name
java
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'
Ngoài vá hệ thống javaos.py (issue with os.system() on windows 2003 with jdk1.5) (mà tôi không thể làm được, tôi phải sử dụng WebLogic out of the box), đây là những gì tôi sử dụng:
def iswindows():
os = java.lang.System.getProperty("os.name")
return "win" in os.lower()
>>> import platform
>>> platform.system()
trong bối cảnh đó ....
import platform
is_windows=(platform.system().lower().find("win") > -1)
if(is_windows): lv_dll=LV_dll("my_so_dll.dll")
else: lv_dll=LV_dll("./my_so_dll.so")
Đây là vấn đề nếu bạn đang sử dụng Mac vì platform.system() trả về "Darwin" trên máy Mac và "Darwin" .lower(). Find ("win") = 3. – mishaF
/usr/bin/python3.2
def cls():
from subprocess import call
from platform import system
os = system()
if os == 'Linux':
call('clear', shell = True)
elif os == 'Windows':
call('cls', shell = True)
Chào mừng bạn đến với SO, đây là một thực hành tốt để giải thích lý do tại sao sử dụng giải pháp của bạn và không chỉ là cách thực hiện. Điều đó sẽ làm cho câu trả lời của bạn có giá trị hơn và giúp người đọc tiếp tục hiểu rõ hơn về cách bạn làm điều đó. Tôi cũng khuyên bạn nên xem Câu Hỏi Thường Gặp của chúng tôi: http://stackoverflow.com/faq. – ForceMagic
Câu trả lời hay, thậm chí có thể ngang bằng với câu trả lời gốc. Nhưng bạn có thể giải thích tại sao. – vgoff
Đối với Jython là cách duy nhất để có được tên os tôi thấy là để kiểm tra os.name
sở hữu Java (thử với sys
, os
và platform
mô-đun cho Jython 2.5.3 trên WinXP):
def get_os_platform():
"""return platform name, but for Jython it uses os.name Java property"""
ver = sys.platform.lower()
if ver.startswith('java'):
import java.lang
ver = java.lang.System.getProperty("os.name").lower()
print('platform: %s' % (ver))
return ver
Nếu bạn muốn dữ liệu người dùng có thể đọc được nhưng vẫn chi tiết, bạn có thể sử dụng platform.platform()
>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'
Dưới đây là một vài cuộc gọi khác nhau có thể bạn có thể làm để xác định bạn đang ở đâu
import platform
import sys
def linux_distribution():
try:
return platform.linux_distribution()
except:
return "N/A"
print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))
Kết quả đầu ra của tập lệnh này chạy trên một vài hệ thống khác nhau có sẵn tại đây: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version
kết quả thú vị trên windows 8:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'
Edit: Đó là một bug
Nếu bạn không tìm kiếm phiên bản kernel vv, nhưng tìm kiếm các bản phân phối Linux bạn có thể muốn sử dụng sau đây
trong python2.6 +
>>> import platform
>>> print platform.linux_distribution()
('CentOS Linux', '6.0', 'Final')
>>> print platform.linux_distribution()[0]
CentOS Linux
>>> print platform.linux_distribution()[1]
6.0
in python2.4
>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0
Rõ ràng, điều này sẽ chỉ hoạt động nếu bạn đang chạy trên linux. Nếu bạn muốn có nhiều tập lệnh chung hơn trên các nền tảng, bạn có thể trộn chúng với các mẫu mã được đưa ra trong các câu trả lời khác.
Mẫu mã để phân biệt hệ điều hành sử dụng python:
from sys import platform as _platform
if _platform == "linux" or _platform == "linux2":
# linux
elif _platform == "darwin":
# MAC OS X
elif _platform == "win32":
# Windows
elif _platform == "win64":
# Windows 64-bit
Đây có phải là mã mẫu từ bất kỳ mô-đun python nào không? Đây là câu trả lời duy nhất trong thực tế, trả lời câu hỏi. –
Đối với kết quả mờ, '' _platform.startswith ('linux') –
câu trả lời gốc như được thấy ở đây http://stackoverflow.com/a/8220141/3286832 – Yannis
Kiểm tra các bài kiểm tra có sẵn với nền tảng mô-đun và in câu trả lời ra cho hệ thống của bạn:
import platform
print dir(platform)
for x in dir(platform):
if x[0].isalnum():
try:
result = getattr(platform, x)()
print "platform."+x+": "+result
except TypeError:
continue
thử điều này:
import os
os.uname()
và bạn có thể làm cho nó:
info=os.uname()
info[0]
info[1]
os.uname() không còn hoạt động như python 3.5. –
Ngoài ra 'os.uname()' không có sẵn trên các cửa sổ: https://docs.python.org/2/library/os.html#os.uname _Availability: ** các hương vị gần đây của Unix. ** _ – ccpizza
Xem bạn có đang sử dụng Windows với Cygwin không, nơi os.name
là posix
.
>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Chỉ để hoàn thành, biến môi trường "OS" dường như được xác định ở mọi nơi. Trên Windows XP/7/8/10, nó được đặt thành "Windows_NT". Trên Linux SuSE SP2, nó được đặt thành "x86-64 linux sles11 [2]". Tôi không có quyền truy cập vào các máy OS-X hoặc BSD, sẽ rất thú vị khi kiểm tra ở đó.
import os
os_name = os.getenv("OS")
if os_name == "Windows_NT":
# Windows
elif "linux" in os_name:
# Linux
elif ...
Bạn cũng có thể chỉ sử dụng mô-đun nền tảng mà không cần nhập mô-đun os để nhận tất cả thông tin.
>>> import platform
>>> platform.os.name
'posix'
>>> platform.uname()
('Darwin', 'mainframe.local', '15.3.0', 'Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', 'x86_64', 'i386')
Một bố cục tốt đẹp và gọn gàng cho mục đích báo cáo có thể đạt được bằng dòng này:
for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]
Điều đó mang lại kết quả này:
system : Darwin
node : mainframe.local
release : 15.3.0
version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
machine : x86_64
processor : i386
phiên bản hệ điều hành nào là mất tích thường là nhưng bạn nên biết nếu bạn đang chạy các cửa sổ, linux hoặc mac một nền tảng indipendent cách là sử dụng thử nghiệm này:
In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
....: if i[0]:
....: print 'Version: ',i[0]
Sử dụng các từ khóa import os
và os.name
.
Làm thế nào về một câu trả lời mới:
import psutil
psutil.OSX #True
psutil.WINDOWS #False
psutil.LINUX #False
Đây sẽ là đầu ra nếu tôi đã sử dụng OSX
Có lẽ thanh lịch nhất trong tất cả các câu trả lời – jsphpl
Nếu bạn đang chạy hệ điều hành MacOS X và chạy platform.system()
bạn nhận được darwin vì hệ điều hành MacOS X được xây dựng trên Hệ điều hành Darwin của Apple. Darwin là hạt nhân của macOS X và về cơ bản là macOS X không có GUI.
- 1. Làm cách nào để phát hiện hệ điều hành đang chạy?
- 2. Kiểm tra xem hệ điều hành Windows có đang chạy ở chế độ an toàn không
- 3. PHP có chức năng phát hiện hệ điều hành đang chạy không?
- 4. Chủ đề đang bị hệ điều hành cắt
- 5. Làm thế nào tôi có thể tìm thấy hệ điều hành hiện tại bằng Python?
- 6. Hệ điều hành bắt đầu quá trình giết khi quá trình python đa luồng chạy
- 7. Xác định hệ điều hành trong thời gian chạy
- 8. Cách tốt nhất cho ứng dụng WinForms để xác định chính xác hệ điều hành Windows nào đang chạy?
- 9. Python trên Hệ điều hành thời gian thực (RTOS)
- 10. Python/Ruby là hệ điều hành di động
- 11. Phát hiện hệ điều hành
- 12. Hệ điều hành trong Ada
- 13. Làm thế nào tôi có thể phát hiện khi tôi đang ở trên một hệ thống đang chạy Unity?
- 14. Làm thế nào để phát hiện ngôn ngữ mặc định của hệ điều hành trong python?
- 15. Dịch vụ nền hệ điều hành Firefox
- 16. Làm thế nào để tìm thấy nếu hệ điều hành của tôi đang chạy trên một môi trường ảo hóa hoặc không ảo hóa?
- 17. jQuery - phát hiện hệ điều hành và phiên bản hệ điều hành
- 18. Python open() unicode hành vi filename hệ điều hành trên khác nhau
- 19. Phát hiện hệ điều hành trong Ruby
- 20. Hệ điều hành biên dịch thời gian
- 21. Hệ điều hành Android và postgreSQL
- 22. Làm thế nào để kiểm tra xem hệ điều hành là Vista bằng Python?
- 23. Phát triển một hệ điều hành
- 24. một hệ điều hành tickless là gì?
- 25. Sử dụng || điều hành thông báo đang
- 26. Xác định hệ điều hành trong .vimrc
- 27. Viết một hệ điều hành với UEFI
- 28. Sách Kiến trúc Hệ điều hành Windows
- 29. Tôi nên phát triển hệ điều hành BlackBerry tối thiểu nào?
- 30. Làm thế nào tôi có thể phát hiện hệ điều hành trong Perl?
xem (http://bugs.python.org/issue12326) để biết chi tiết! – arnkore
Đây là câu hỏi liên quan: [Kiểm tra tên distro linux] (http://stackoverflow.com/q/2756737/320399). – blong