shared file access in python

Lev Elblert elbertlev at
Mon Jun 21 16:18:24 CEST 2004

Andrew MacIntyre <andymac at> wrote in message news:<mailman.68.1087793423.454.python-list at>...
> On Sat, 18 Jun 2004, Lev Elblert wrote:
> > Does Python allow to open files in shared mode like fsopen or _open
> > do? If not how to make it happen?
> Assuming you're on a Win32 platform, I think the msvcrt module has what
> you're looking for.  The standard file object supports only the standard C
> library file stream API.

Thanks all!

1. flags parameter tells creation disposition (read-only,
executable(unix)) etc, not shared.

2. msvcrt.lib does have a lot of functions, but not msvcrt module in
Python. (correct me if I'm wrong)

3. I created and extension:


#include "Python.h"
#include <share.h>

static PyObject *
Dofsopen(PyObject *self, PyObject *args)
char *FileName = NULL;
char *Mode = NULL;
char * Share = NULL;

int ShareFlag = _SH_DENYNO;
FILE *f;
PyObject *FileObject;
	if (!PyArg_ParseTuple(args, "sss", &FileName, &Mode, &Share))
        return NULL;
	if (strcmp(Share, "") == 0) // allow all 
		ShareFlag = _SH_DENYNO;
	else if (strcmp(Share, "r") == 0) // deny read
		ShareFlag = _SH_DENYRD;
	else if (strcmp(Share, "w") == 0) // deny write
		ShareFlag = _SH_DENYWR;
	else if (strcmp(Share, "rw") == 0) // deny read/write
		ShareFlag = _SH_DENYRW;
	f = _fsopen(FileName, Mode, ShareFlag);
	if (!f)
		return NULL;
	FileObject = PyFile_FromFile(f, FileName, Mode, fclose);
	return FileObject;

static PyMethodDef fsopen_methods[] = {
	{"fsopen", Dofsopen, METH_VARARGS, "fsopen() doc string"},

	Py_InitModule("fsopen", fsopen_methods);


This extension returnns a Python file object or rases an exception.
Also MS docs say, that fsopen is ANSI C function. I do not have access
to unix machine, so can't check it.

Thanks again.

More information about the Python-list mailing list