Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import annotations
- import re
- from pathlib import Path
- REGEX = re.compile(r"^Serial\s+:\s+([0-9a-f]+)$", re.MULTILINE)
- # with regex
- def get_serial(as_hex: bool = False) -> int | str:
- cpuinfo = Path("/proc/cpuinfo").read_text()
- match = REGEX.search(cpuinfo)
- if not match:
- raise RuntimeError("This is not a Raspberry Pi")
- serial = int(match.group(1), 16)
- if as_hex:
- serial = hex(serial)
- return serial
- # no regex
- def get_serial(as_hex: bool = False) -> int | str:
- with open("/proc/cpuinfo") as fd:
- for line in fd:
- if line.startswith("Serial"):
- serial = int(line.rpartition(":")[2], 16)
- break
- else:
- # This branch is only reached, if the
- # for-loop has been finished
- # a break in the for loop will not execute this branch
- raise RuntimeError("This is not a Raspberry Pi")
- if as_hex:
- serial = hex(serial)
- return serial
- if __name__ == "__main__":
- try:
- print(get_serial())
- print(get_serial(as_hex=True))
- except RuntimeError as err:
- raise SystemExit(err.args[0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement