def _get_partition_names(): all_part_info = parse_parts() if len(all_part_info)==0: raise OSError("As no partitions were detected, it is likely there was an error with reading /proc/partitions. Please check to see that the file format has not changed.") if "name" not in all_part_info[0].keys(): raise OSError("The \"name\" property could not be found. Check to see if the format of /proc/partitions has changed.") return [part_info["name"] for part_info in all_part_info]
udevadm_key_vals = [tuple(line.split('=')[:2]) for line in udevadm_lines] return dict(udevadm_key_vals) # list[str] -> dict{str:dict{str:str}} def parse_devs(dev_name_list): all_dev_info = {} for dev_name in dev_name_list: all_dev_info[dev_name] = _parse_dev(dev_name) return all_dev_info # dict{str:dict{str:str}},str,str -> None def _print_attrib(dev_info,attrib,attrib_str): if attrib in dev_info: print "{0}: {1}".format(attrib_str,dev_info[attrib]) if __name__=="__main__": from parse_parts import parse_parts all_parts_info = parse_parts() all_parts_names = [part_info["name"] for part_info in all_parts_info] all_devs_info = parse_devs(all_parts_names) for dev_name in all_devs_info: print dev_name _print_attrib(all_devs_info[dev_name],"DEVNAME","device name") _print_attrib(all_devs_info[dev_name],"ID_VENDOR","vendor") _print_attrib(all_devs_info[dev_name],"ID_MODEL","model") _print_attrib(all_devs_info[dev_name],"ID_FS_LABEL_ENC","encoded label") _print_attrib(all_devs_info[dev_name],"ID_FS_TYPE","filesystem type") _print_attrib(all_devs_info[dev_name],"DEVTYPE","device type") print