On Saturday, 28 May 2016 16:35:35 UTC+10, Sayth Renshaw wrote: > > > > > >Ok after printing a few things i have found an error. > > > > > >def GetArgs(): > > > '''parse XML from command line''' > > > parser = argparse.ArgumentParser() > > > > > > 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))) > > > > > > print(files) > > > return files > > > > > >a = GetArgs() > > >print(a) > > > > > >so printing the files or the call to the function returns set() not the > > >actual files. > > > > Since you're constructing a set of filenames, this means it is probably > > returning the right kind of thing, but it is empty. That points to the glob > > not > > doing what you want or the for-loop not doing anything. > > > > >[sayth@localhost pyXML]$ python3 racemeeting.py data/*.xml > > >set() > > >set() > > >set() > > > > So... Add more prints! > > > > Specificly, print(args) right after it is set, and put a print() _inside_ > > the > > loop before the call to files.update, probably printing "path", eg > > print("path > > =", path). > > > > Then see what you learn. > > > > Cheers, > > Cameron Simpson > > Having done extra prints > > name_pattern = "*" + args.extension > for path in args.path: > print(args.path) > print(path) > files.update(glob.glob(os.path.join(path, name_pattern))) > > it is getting the path and file however I think it is keeping the directory > so i am not getting files. > > [sayth@localhost pyXML]$ python3 racemeeting.py data/*.xml > ['data/20160528RAND0.xml'] > data/20160528RAND0.xml > set() > set() > ['data/20160528RAND0.xml'] > data/20160528RAND0.xml > > Sayth Actually think I have found the cause and its really small but on way its called. I was calling python3 racemeeting.py data/*.xml which gives the directory and file as the path ['data/20160528RAND0.xml']
But with arguments separated by a space I actually receive what i thought I would get a path and extension such as sayth@localhost pyXML]$ python3 racemeeting.py data/ *.xml Namespace(extension='', path=['data/', '*.xml']) Traceback (most recent call last): File "racemeeting.py", line 35, in <module> Sayth -- https://mail.python.org/mailman/listinfo/python-list