Problem
When trying to write out a GRIB or BUFR message to a file using codes_write, an error is generated (an exception is thrown)
Solution
You have written the following snippet to save a message into a binary file (GRIB or BUFR):
fout = open('temp.out', 'w') codes_write(msg, fout) fout.close()
The call to codes_write
throws an exception:
Traceback (most recent call last): File "encode.py", line 85, in <module> sys.exit(main()) File "encode.py", line 74, in main example(sys.argv[1]) File "encode.py", line 61, in example codes_write(msg, fout) ... fileobj.write(msg_bytes) TypeError: write() argument must be str, not bytes
Make sure you are using the BINARY MODE for reading and writing
- Replace the 'w' with 'wb' in the call to open
fout = open('temp.out', 'wb')
- This mode should be used for all files that do not contain text.