我正在尝试编写python脚本以查明/ dev中是否存在磁盘设备,但它总是产生False。还有其他办法吗?
我试过
>>> import os.path
>>> os.path.isfile("/dev/bsd0")
False
>>> os.path.exists("/dev/bsd0")
False
$ ll /dev
...
brw-rw---- 1 root disk 252, 0 Nov 12 21:28 bsd0
...
答案 0 :(得分:3)
这未经过严格测试,但似乎有效:
import stat
import os.stat
def disk_exists(path):
try:
return stat.S_ISBLK(os.stat(path).st_mode)
except:
return False
结果:
disk_exists("/dev/bsd0")
True
disk_exists("/dev/bsd2")
False
答案 1 :(得分:1)
这里有一些非传统的情况。
os.path.isfile()
将为常规文件返回True
,对于设备文件将返回False
False
。
但至于
os.path.exists()
,
documetation声明如果“权限不是,则可以返回os.stat()
被授予执行os.path.exists
“。仅供参考
def exists(path):
"""Test whether a path exists. Returns False for broken symbolic links"""
try:
os.stat(path)
except OSError:
return False
return True
是:
os.stat
所以,如果ls
失败了,我看不出ls
会怎样
成功(os.stat('/dev/bsd0')
AFAIK也调用stat()系统调用)。那么,检查一下
os.path.exists
正在提升,以了解你为什么不在
能够检测到这个特定设备文件的存在
os.path.exists()
,因为假设使用var query = from p in db.Payments
where p.Status == false
&& DateTime.Compare(DateTime.Now, p.NextPaymentDate.Value) == 1
group p by p.CompanyID into op
select op.OrderByDescending(nd => nd.NextPaymentDate.Value).FirstOrDefault();
是检查块设备文件是否存在的有效方法。