1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import os
- import zipfile
- def walk_directory(path, endpoint='.py'):
- """
- Args:
- path: Directory path
- endpoint:
- Returns: The list of all files' path in the directory
- """
- file_list = []
- for root, dirs, files in os.walk(path):
- for file in files:
- file_path = os.path.join(root, file)
- if file_path.endswith(endpoint):
- file_list.append(file_path)
- return file_list
- def get_file_list(source, endpoint='.py'):
- """
- Args:
- endpoint:file_name's endswith
- source:file_name which can be directory, file, zip
- Returns:
- """
- if isinstance(source, str):
- if os.path.isdir(source):
- return source, walk_directory(source)
- elif source.endswith('.py'):
- return os.path.dirname(source), [source]
- elif source.endswith(('.zip', '.rar', '.7z')):
- file_zip = zipfile.ZipFile(source, 'r', zipfile.ZIP_DEFLATED)
- py_files = [py_file for py_file in file_zip.namelist() if py_file.endswith(endpoint)]
- file_zip.extractall(path=os.path.dirname(source), members=py_files)
- return source.replace('.zip', '').replace('.rar', '').replace('.7z', ''), [os.path.dirname(source) + "/" + py_file for py_file in py_files]
- # TODO Add the situation that source is a url or a cache
- else:
- raise ValueError("The parameter source is not supported")
- if __name__ == '__main__':
- source, file_list = get_file_list("/Users/liufan/program/PYTHON/SAP/TestProject/22-photohash-master.zip")
- print(source)
- print(file_list)
|