Файл против учардета

Быстрое решение Python, которое только один раз просматривает дерево исходных файлов

Так как я не мог найти удовлетворительного -существующего решения, я решил сделать быстрый скрипт Python для его реализации.

В частности, этот метод эффективен, потому что он просматривает дерево исходных файлов только один раз снизу вверх.

Это также позволит вам быстро настроить такие вещи, как перезапись файлов, по своему вкусу.

Использование:

move-merge-dirs src/ dest/

переместит все содержимое src/*в dest/, а src/исчезнет.

переместить -объединить -каталоги

#!/usr/bin/env python3

import argparse
import os

def move_merge_dirs(source_root, dest_root):
    for path, dirs, files in os.walk(source_root, topdown=False):
        dest_dir = os.path.join(
            dest_root,
            os.path.relpath(path, source_root)
        )
        if not os.path.exists(dest_dir):
            os.makedirs(dest_dir)
        for filename in files:
            os.rename(
                os.path.join(path, filename),
                os.path.join(dest_dir, filename)
            )
        for dirname in dirs:
            os.rmdir(os.path.join(path, dirname))
    os.rmdir(source_root)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='Move merge src/* into dest. Overwrite existing files.'
    )
    parser.add_argument('src_dir')
    parser.add_argument('dest_dir')
    args = parser.parse_args()
    move_merge_dirs(args.src_dir, args.dest_dir)

Восходящий поток GitHub .

См. также:https://stackoverflow.com/questions/22588225/how-do-you-merge-two-directories-or-move-with-replace-from-the-windows-command

Протестировано на Python 3.7, Ubuntu 18.04.

0
21.04.2020, 13:02
2 ответа

fileлучше в двоичных файлах, uchardetлучше в текстовых файлах. Например файл не знает Windows -1250.

1
19.03.2021, 02:27

fileявляется хорошим инструментом для идентификации или, скорее, предположения о кодировке .

Вы можете использоватьiconvдля изменения кодировки. Полный ответ.

iconv -f ISO-8859-15 -t UTF-8 < input.txt > output.txt
1
19.03.2021, 02:27

Теги

Похожие вопросы