Last active
August 27, 2022 14:24
-
-
Save 89465127/5273149 to your computer and use it in GitHub Desktop.
Get a list of filenames using argparse (updated to use default formatter)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import argparse | |
import os | |
import glob | |
def main(): | |
#Does not currently have support to read files from folders recursively | |
parser = argparse.ArgumentParser(description='Read in a file or set of files, and return the result.', formatter_class=argparse.ArgumentDefaultsHelpFormatter) | |
parser.add_argument('path', nargs='+', help='Path of a file or a folder of files.') | |
parser.add_argument('-e', '--extension', default='', help='File extension to filter by.') | |
args = parser.parse_args() | |
# Parse paths | |
full_paths = [os.path.join(os.getcwd(), path) for path in args.path] | |
files = set() | |
for path in full_paths: | |
if os.path.isfile(path): | |
files.add(path) | |
else: | |
files |= set(glob.glob(path + '/*' + args.extension)) | |
for f in files: | |
print f | |
if __name__ == '__main__': | |
main() |
To make recursive search an option, add this to the args section:
parser.add_argument('-r', '--recursive', action='store_true', default=False, help='Search through subfolders')
and modify the block from @jesusjda
for path in full_paths:
if os.path.isfile(path):
fileName, fileExt = os.path.splitext(path)
if args.extension == '' or args.extension == fileExt:
files.add(path)
else:
if (args.recursive):
full_paths += glob.glob(path + `'/*')
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To support reading files from folder recursively, and do the filter to all files you can do that: