ASPN ActiveState Programmer Network  
ActiveState, a division of Sophos
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups
Submit Recipe
My Recipes

All Recipes
All Cookbooks


View by Category

Title: Sending binary data to stdout under Windows
Submitter: Hamish Lawson (other recipes)
Last Updated: 2002/01/28
Version no: 1.4
Category: Files

 

5 stars 6 vote(s)


Approved

Description:

You want to send binary data, such as for an image, to stdout under Windows.

Source: Text Source

import sys

if sys.platform == "win32":
    import os, msvcrt
    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

Discussion:

If you are reading or writing binary data under Windows, such as for an image, then the file must specifically be opened in binary mode (Unix doesn't make a distinction between text and binary modes). But this is a problem for a program that wants to write binary data to standard output (as a web CGI program would be expected to do), since the 'sys' module opens the 'stdout' file object on your behalf and normally does so in text mode. You could have 'sys' open 'stdout' in binary mode instead by supplying the '-u' command-line option to the Python interpreter. But if you want to control this mode from within a program, then (as shown in the code sample) you can use the 'setmode' function provided by the Windows-specific 'msvcrt' module to change the mode of stdout's underlying file descriptor.



Add comment

No comments.



Highest rated recipes:

1. A simple XML-RPC server

2. Web service accessible ...

3. IPy Notify

4. Changing return value ...

5. Quantum Superposition

6. Pickle objects under ...

7. Generalized delegates ...

8. Reorder a sequence (uses ...

9. Setting Win32 System ...

10. ObjectMerger




Privacy Policy | Email Opt-out | Feedback | Syndication
© 2006 ActiveState Software Inc. All rights reserved.