[Python-Dev] Implementing File Modes

Devin Cook devin.c.cook at gmail.com
Thu Jul 30 03:20:36 CEST 2009


Hmm... can't you do this?

if encryptionEnabled:
    p = subprocess.Popen(["gpg", "--decrypt", "supersecret.html.gpg"],
stdin = subprocess.PIPE)
    fileobj = p.stdin
else:
    fileobj = open("notsosecret.html")

I think that works. Is there something this way won't work for? You
can also do the same thing to get stdout and stderr file objects. I
guess a wrapper would simplify this process.

-Devin

On Wed, Jul 29, 2009 at 7:41 PM, Eric Pruitt<eric.pruitt at gmail.com> wrote:
> My motivation came from an instance when I was using subprocess.Popen for a
> Linux / Windows cross platform program. In part of the program, I was
> writing and reading to a cron like object. On Windows, it was a text file
> and on Linux it would be the crontab executable. Had I been able to
> substitute the "open()" function with my wrapper, it would have been the
> only change I had to make for cross platform compatibility; instead of
> having to change numerous lines because Linux would need Popen and Windows
> would need a regular file open(), I could simply make it so that if the
> platform was Linux, my wrapper is used in place of that. Just another
> example would be having an external program decrypt a file that can be in
> plain text or encrypted that might go something like this:
>
> if encryptionEnabled:
>     fileobj = subprocess.ProcessIOWrapper("gpg --decrypt
> supersecret.html.gpg")
> else:
>     fileobj = open("notsosecret.html")
>


More information about the Python-Dev mailing list