51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: UTF-8 -*-
|
|
|
|
from fnmatch import filter
|
|
from io import BytesIO
|
|
from os import (walk, path, rename)
|
|
from zipfile import ZipFile, ZIP_DEFLATED
|
|
|
|
def main(in_dir, dic_values, backup_suffix=None,encoding='UTF-8'):
|
|
for (dirpath, dirnames, filenames) in walk(in_dir):
|
|
qgzs = filter(filenames, '*.qgz')
|
|
for qgz in qgzs:
|
|
qgz_path = path.join(dirpath, qgz)
|
|
mem_qgz = BytesIO()
|
|
with ZipFile(qgz_path, 'r') as in_qgz, ZipFile(mem_qgz, 'w', compression=ZIP_DEFLATED) as tmp_qgz:
|
|
for f in in_qgz.infolist():
|
|
data = in_qgz.read(f.filename).decode(encoding,errors='ignore')
|
|
if f.filename.endswith('.qgs'):
|
|
for old, new in dic_values.items():
|
|
data = data.replace(old, new)
|
|
# data = [data.replace('{}'.format(old), '{}'.format(new)) for old, new in dic_values.items()][0]
|
|
tmp_qgz.writestr(f.filename, data)
|
|
|
|
if backup_suffix is not None:
|
|
backup_suffix = backup_suffix if backup_suffix.startswith('.') else '.' + backup_suffix
|
|
try:
|
|
rename(qgz_path, qgz_path + backup_suffix)
|
|
except FileExistsError as err:
|
|
print('Unable to backup file, skipping {} ({})'.format(qgz_path, err))
|
|
continue
|
|
|
|
with open(qgz_path, 'wb') as out_qgz:
|
|
out_qgz.write(mem_qgz.getvalue())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
backup_suffix = '.orig' # Don't overwrite orig .qgz (just in case...), append ".orig"
|
|
in_dir = r'/home/colas/Documents/tmp/MARJORIE'
|
|
|
|
encodage = 'UTF-8'
|
|
dic_values = {
|
|
'192.168.0.189': '91.134.194.221',
|
|
'authcfg=xoibz7j': 'authcfg=ceniser',
|
|
'bd_cen38': 'bd-cen-38',
|
|
# 'MS Shell Dlg 2':'Tahoma',
|
|
# 'https://datacarto.datara.gouv.fr':' https://datacarto.open-datara.fr',
|
|
# 'Dingbats': '',
|
|
}
|
|
|
|
main(in_dir, dic_values, backup_suffix,encoding=encodage) |