Trouble porting glob bash behavior with argparse to windows shell

Sayth Renshaw flebber.crue at gmail.com
Sun May 15 23:21:24 EDT 2016


On Wednesday, 4 May 2016 17:57:32 UTC+10, Sayth Renshaw  wrote:
> Oops sorry noticed you did in the glob. Sorry squinting at phone. 
> 
> Sayth

Hi

this seems to be causing me an error in my thinking as well as the program. I am creating a function GetArgs to take a path and file extension from the command line. 

However I cannot call it effectively. I will clrify this is my function

import argparse
import glob
import os
import sqlite3


def GetArgs(parser):
    '''parse XML from command line'''
    parser.add_argument("path", nargs="+")
    parser.add_argument('-e', '--extension', default='',
                        help='File extension to filter by.')
    args = parser.parse_args()

    files = set()
    name_pattern = "*" + args.extension
    for path in args.path:
        files.update(glob.glob(os.path.join(path, name_pattern)))
    return files

Then later in program I am attempting to call it an a for statement.

filesToProcess = GetArgs()
for meeting in filesToProcess:
    meetdata = [meeting.get(attr) for attr in meetattrs]
    cur.execute("insert into meetings values (" +
                ",".join(["%s"] * len(meetattrs)) + ")", meetdata)


this fails as i would expect, however if I declare a list as the GetArgs() argument it fails as well.

Where my confusion is that I created the function to take arguments from the command line, so I don't have that variable to supply until executed.

Have i overbaked the cake?

Sayth



More information about the Python-list mailing list