Aha. We haven't talked about what exactly is clumsy for you with python accessing hardware and me personally I do not have any experience in this.
I did a quoogling (my short for quick googling as I like to create new words) ;-))
for interfacing hardware with raspberry pi and python and came up with this links
which - from a 2 minute very quick cross-read looked quite comfortable. Of course a 2 minute cross-reading is not the same as having realised a real hardware-project with a Raspi
What I did do is using ESP8266s and ESP32s to send UDP-messages to a Raspi where the Raspi stores the received messages in textfiles. The python-code for doing this is pretty short
# very simple and short upd-receiver found here
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # For UDP
udp_host = socket.gethostname() # Host IP
udp_port = 4210 # specified port to connect
print ("Waiting for client...")
HeaderDelimitChar = "$"
data,addr = sock.recvfrom(1024) #receive data from client
Msg = data.decode('utf-8')
print ("Received Message: #",Msg,"# from",addr)
EndOfHeader = Msg.find(HeaderDelimitChar)
HeaderBytes = Msg[0:EndOfHeader]
FileName = HeaderBytes + ".txt"
myFile = open(FileName, "a+")
EndOfStr = data.find(0)
MsgToWrite = Msg[EndOfHeader + 1 :1024] + '\r'
print ("Data #",MsgToWrite,"#")
Something like a Teensy 4.0/4.1 has quite a lot of calculation-power 32bit 600 MHz and a lot of RAM (1MB) but of course is not a full blown OS-based-Computer like a Raspi.
So it still depends on what you want to do.
Some time ago I discovered ESP-Dash, which makes developing webbased Interfaces a breeze because all the HTML-stuff is done in the backround. (the pro-version offers free position-configuring)
And Webserial and elegantOTA
best regards Stefan