10826e83eSopenharmony_ci#!/usr/bin/env python3 20826e83eSopenharmony_ci# -*- coding: utf-8 -*- 30826e83eSopenharmony_ci 40826e83eSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd. 50826e83eSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 60826e83eSopenharmony_ci# you may not use this file except in compliance with the License. 70826e83eSopenharmony_ci# You may obtain a copy of the License at 80826e83eSopenharmony_ci# 90826e83eSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 100826e83eSopenharmony_ci# 110826e83eSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 120826e83eSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 130826e83eSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140826e83eSopenharmony_ci# See the License for the specific language governing permissions and 150826e83eSopenharmony_ci# limitations under the License. 160826e83eSopenharmony_ci 170826e83eSopenharmony_cifrom __future__ import absolute_import 180826e83eSopenharmony_ci 190826e83eSopenharmony_cifrom io import open 200826e83eSopenharmony_cifrom glob import iglob 210826e83eSopenharmony_ci 220826e83eSopenharmony_ciimport os 230826e83eSopenharmony_ciimport datetime 240826e83eSopenharmony_ciimport fnmatch 250826e83eSopenharmony_ciimport shutil 260826e83eSopenharmony_ciimport sys 270826e83eSopenharmony_ciimport time 280826e83eSopenharmony_ci 290826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 300826e83eSopenharmony_ci 310826e83eSopenharmony_cidef get_year(): 320826e83eSopenharmony_ci return str(datetime.datetime.now().year) 330826e83eSopenharmony_ci 340826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 350826e83eSopenharmony_ci 360826e83eSopenharmony_cidef read_file(name, normalize=True): 370826e83eSopenharmony_ci with open(name, 'r', encoding='utf-8') as f: 380826e83eSopenharmony_ci data = f.read() 390826e83eSopenharmony_ci if normalize: 400826e83eSopenharmony_ci data = data.replace("\r\n", "\n") 410826e83eSopenharmony_ci return data 420826e83eSopenharmony_ci 430826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 440826e83eSopenharmony_ci 450826e83eSopenharmony_cidef write_file(name, data): 460826e83eSopenharmony_ci with open(name, 'w', encoding='utf-8') as f: 470826e83eSopenharmony_ci if sys.version_info.major == 2: 480826e83eSopenharmony_ci f.write(data.decode('utf-8')) 490826e83eSopenharmony_ci else: 500826e83eSopenharmony_ci f.write(data) 510826e83eSopenharmony_ci 520826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 530826e83eSopenharmony_cidef make_dirs(name, quiet=True): 540826e83eSopenharmony_ci if not path_exists(name): 550826e83eSopenharmony_ci if not quiet: 560826e83eSopenharmony_ci sys.stdout.write('creating ' + name + ' directory.\n') 570826e83eSopenharmony_ci os.makedirs(name) 580826e83eSopenharmony_ci 590826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 600826e83eSopenharmony_cidef path_exists(name): 610826e83eSopenharmony_ci return os.path.exists(name) 620826e83eSopenharmony_ci 630826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 640826e83eSopenharmony_ci 650826e83eSopenharmony_cidef backup_file(name, quiet=True): 660826e83eSopenharmony_ci bak_name = name + '.' + time.strftime('%Y-%m-%d-%H-%M-%S') 670826e83eSopenharmony_ci shutil.move(name, bak_name) 680826e83eSopenharmony_ci if not quiet: 690826e83eSopenharmony_ci sys.stdout.write('moving ' + name + ' file.\n') 700826e83eSopenharmony_ci 710826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 720826e83eSopenharmony_ci 730826e83eSopenharmony_cidef get_files(search_glob): 740826e83eSopenharmony_ci recursive_glob = '**' + os.path.sep 750826e83eSopenharmony_ci if recursive_glob in search_glob: 760826e83eSopenharmony_ci if sys.version_info >= (3, 5): 770826e83eSopenharmony_ci result = iglob(search_glob, recursive=True) 780826e83eSopenharmony_ci else: 790826e83eSopenharmony_ci result = get_files_recursive(*search_glob.split(recursive_glob)) 800826e83eSopenharmony_ci else: 810826e83eSopenharmony_ci result = iglob(search_glob) 820826e83eSopenharmony_ci 830826e83eSopenharmony_ci return sorted(result) 840826e83eSopenharmony_ci 850826e83eSopenharmony_ci# ------------------------------------------------------------------------------------------------------# 860826e83eSopenharmony_ci 870826e83eSopenharmony_cidef get_files_recursive(directory, pattern): 880826e83eSopenharmony_ci for root, dirs, files in os.walk(directory): 890826e83eSopenharmony_ci for basename in files: 900826e83eSopenharmony_ci if fnmatch.fnmatch(basename, pattern): 910826e83eSopenharmony_ci filename = os.path.join(root, basename) 920826e83eSopenharmony_ci yield filename 930826e83eSopenharmony_ci 94