如上所述,只需检查是否有方法检查运行程序的计算机的根字母(即C:\\
或S:\\
)。
我不知道是否有一种内置于os
的方法,或者我是否需要专业功能。
答案 0 :(得分:3)
在Windows上试试这个:
第一种方式(使用ctypes和pathlib模块)
import ctypes.wintypes, pathlib
CSIDL_PERSONAL = 5
SHGFP_TYPE_CURRENT = 0
buf = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH)
ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, SHGFP_TYPE_CURRENT, buf)
my_path = pathlib.Path(buf.value)
print(my_path.drive)
另一种方式(使用win32包):
import win32api
print(win32api.GetWindowsDirectory())
第三种方式(使用win32包):
import win32com.client
objShell = win32com.client.Dispatch("WScript.Shell")
allUserDocs = objShell.ExpandEnvironmentStrings("%windir%")
print(allUserDocs)
第四种方式(使用os模块):
import os
print(os.path.expandvars("%SystemRoot%"))
第五种方式(使用wmi模块):
import wmi
c = wmi.WMI()
for os in c.Win32_OperatingSystem():
print(os.SystemDrive)
在Windows和LINUX上:
第一种方式(使用os和pathlib模块):
import os, pathlib
home = pathlib.Path(os.path.expanduser("~"))
print(home.drive)
第二种方式(使用pathlib模块):
import pathlib
my_path = pathlib.Path(pathlib.Path.home())
print(my_path.drive)
祝你好运......
答案 1 :(得分:1)
这就是你需要的
import os
def root_path():
return os.path.abspath(os.sep)
root_path()
它给出了' /'对于Linux 和C:\ for windows
答案 2 :(得分:0)
请注意,WiLL_K的方法更好,我不知道这种方法是否存在。
import os
letter = os.getcwd().split("\\")[0][0]
如果脚本是从C:
驱动器执行的,letter
将包含C
。
答案 3 :(得分:0)
[注意:我使用的是Python 3.6.3和Windows 8.1 x64]
**
os.path.abspath给出了根目录,os.sep给出了 操作系统用于分隔路径名组件的字符 这是' \'对于Windows。要删除我使用的双斜杠 os.path.normpath()函数
**
import os
def getRootDirectory():
return os.path.normpath(os.path.abspath(os.sep))
print(getRootDirectory())
哪个输出:
C:\