using PyArg_ParseTuple with a list

Les Schaffer godzilla at netmeg.net
Sat Apr 22 09:54:20 EDT 2000


> I wish to pass a Python list [] to a C extension module, but I am
> unsure of the proper format to specify in PyArg_ParseTuple

here is a bit of code i wrote to pass a list of strings in to a C
extension:

...
    char * tok;         /* delimiter tokens for strtok */
    int cols;           /* number of cols to parse, from the left */

    int numLines;       /* how many lines we passed for parsing */
    char * line;        /* pointer to the line as a string */
    char * token;       /* token parsed by strtok */

    PyObject * listObj; /* the list of strings */
    PyObject * strObj;  /* one string in the list */
    
    /* the O! parses for a Python object (listObj) checked
       to be of type PyList_Type */
    if (! PyArg_ParseTuple( args, "O!is", &PyList_Type, &listObj, 
			   &cols, &tok )) return NULL;
    
    /* get the number of lines passed to us */
    numLines = PyList_Size(listObj);

    /* should raise an error here. */
    if (numLines < 0)	return NULL; /* Not a list */

...

    /* iterate over items of the list, grabbing strings, and parsing
       for numbers */
    for (i=0; i<numLines; i++){

	/* grab the string object from the next element of the list */
	strObj = PyList_GetItem(listObj, i); /* Can't fail */

	/* make it a string */
	line = PyString_AsString( strObj );

	/* now do the parsing */


les schaffer



More information about the Python-list mailing list