QUERY · ISSUE
print output redirection not working as in Python.
bug
Port, board and/or hardware
raspberry pico2w
MicroPython version
MicroPython v1.26.0 on 2025-08-09; Raspberry Pi Pico 2 W with RP2350
Reproduction
# print redirection test
import sys
proper_stdout = sys.stdout # save original
log = open('out.txt', 'w')
sys.stdout = log # redirect stdout
print('hello')
print('wheres my print')
log.close()
sys.stdout = proper_stdout # revert redirect
print('back to the future')
print('so whats in the out.txt file?')
read_log = open('out.txt', 'r')
for line in read_log:
print(line)
read_log.close()
Expected behaviour
The sys.stdout would be redirected to the 'log' file (out.txt) and the following print two print statement contents would be directed to the out.txt file.
Observed behaviour
Traceback (most recent call last):
File "<stdin>", line 5, in <module>
AttributeError: 'module' object has no attribute 'stdout'
line 5 is:
sys.stdout = log
Additional Information
This code snippet works as expected in Python.
Code of Conduct
Yes, I agree
CANDIDATE · ISSUE
Thread on Core 1 on PICO hangs when accessing io
bugport-rp2needs-info
Port, board and/or hardware
Raspberry Pi Pico
MicroPython version
MicroPython v1.23.0 on 2024-06-02; Raspberry Pi Pico with RP2040
Reproduction
import os
import time
import _thread
def core1_thread():
try:
print("entering core1_thread")
text = "some text to log"
# Open log file in append mode
f = open("test.log", "a")
f.write(text)
except OSError as ex:
print(ex)
finally:
f.close()
def create_log():
"""
Check if the log file exists. If the log file does not exist, create the log file and write a header line.
Parameters:
None
Returns:
None
"""
_log_fn = "/test.log"
try:
# File exists
os.stat(_log_fn)
return
except OSError:
idx = _log_fn.rfind("/")
dir = _log_fn[1:idx]
if dir and not dir in os.listdir():
os.mkdir(dir)
# File does not exist
try:
t = f"file {_log_fn} created\n"
with open(_log_fn, "a") as f:
f.write(t)
print(t.rstrip())
except OSError as ex:
raise OSError(f"exception {ex}")
def main():
create_log()
thread = _thread.start_new_thread(core1_thread, ())
if __name__ == "__main__":
main()
time.sleep(1) # if 'mpremote run', allow thread to run before we soft reset
Expected behaviour
Expected to see 'some text to log' in file test.log on pico.
Observed behaviour
After starting the thread it hangs after printing 'entering core1_thread'.
Additional Information
No, I've provided everything above.
Code of Conduct
Yes, I agree