Код в Python не выполняет системные команды - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть структура папок с подпапками, которые содержат файлы с одинаковыми именами.Я хотел бы скопировать файлы, включая иерархию папок.Например:

path/to/folder/A

содержит подпапки a, b, c, которые содержат файл backup.txt.Я хотел бы скопировать их в другую папку:

path/to/another/destination

Я не могу найти ничего подобного в Windows 10. Я попытался разобрать эту проблему в Python.

Выполнение кода нижеследует скопировать всю структуру под A в path/to/another/destination, чтобы в destination была копия папки A (включая A), но содержащая только те подпапки, которые содержат файлы file.

Код ничего не делает.Он не создает папку ('A') в destination и не копирует файл из источника в место назначения.Кажется, что команды: os.mkdir, os.makedirs и shutil.copy не выполняются.Я не вижу никакой новой папки в месте назначения.

from sys import argv, exit
from os.path import split, splitext, join, isdir, exists, normpath
from os import walk, makedirs, mkdir, sep
from shutil import copy

file = argv[1]
source = normpath(argv[2])
dest = normpath(argv[3])
main_fol = source.split(sep)[-1]

for p,_,f in walk(source):
    char_fol = join(*p.split(sep)[-2:])
    new_dest = join(dest, main_fol, char_fol)
    for e in f:
        if file in e:
            if not exists(new_dest):
                mkdir(new_dest)
            copy(join(p,e), new_dest)

РЕДАКТИРОВАТЬ.

У меня есть исходная папка в D:\source с большим количеством подпапок, которые содержат файлы ElvUI.*.Я прокомментировал copy и if not exit ... и добавил print s строк к коду:

            # ...
            print("Fom:", join(p,e))
            print("To:", new_dest)
            print("")

Когда я выполняю скрипт на python:

python copy_files.py ElvUI D:\source D:\destination

У меня есть этот вывод ниже.Так что он находит файлы.

Fom: D:\source\Agola\SavedVariables\ElvUI.lua
To: D:\destination\source\Agola\SavedVariables

Fom: D:\source\Agola\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Agola\SavedVariables

Fom: D:\source\Anders\SavedVariables\ElvUI.lua
To: D:\destination\source\Anders\SavedVariables

Fom: D:\source\Anders\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Anders\SavedVariables

Fom: D:\source\Benjo\SavedVariables\ElvUI.lua
To: D:\destination\source\Benjo\SavedVariables

Fom: D:\source\Benjo\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Benjo\SavedVariables

Fom: D:\source\Berni\SavedVariables\ElvUI.lua
To: D:\destination\source\Berni\SavedVariables

Fom: D:\source\Berni\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Berni\SavedVariables

Fom: D:\source\Caroin\SavedVariables\ElvUI.lua
To: D:\destination\source\Caroin\SavedVariables

Fom: D:\source\Caroin\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Caroin\SavedVariables

Fom: D:\source\Cornel\SavedVariables\ElvUI.lua
To: D:\destination\source\Cornel\SavedVariables

Fom: D:\source\Cornel\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Cornel\SavedVariables

Fom: D:\source\Dan\SavedVariables\ElvUI.lua
To: D:\destination\source\Dan\SavedVariables

Fom: D:\source\Dan\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Dan\SavedVariables

Fom: D:\source\Diana\SavedVariables\ElvUI.lua
To: D:\destination\source\Diana\SavedVariables

Fom: D:\source\Diana\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Diana\SavedVariables

Fom: D:\source\Ela\SavedVariables\ElvUI.lua
To: D:\destination\source\Ela\SavedVariables

Fom: D:\source\Ela\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Ela\SavedVariables

Fom: D:\source\Josephine\SavedVariables\ElvUI.lua
To: D:\destination\source\Josephine\SavedVariables

Fom: D:\source\Josephine\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Josephine\SavedVariables

Fom: D:\source\Lindas\SavedVariables\ElvUI.lua
To: D:\destination\source\Lindas\SavedVariables

Fom: D:\source\Lindas\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Lindas\SavedVariables

Fom: D:\source\Lorek\SavedVariables\ElvUI.lua
To: D:\destination\source\Lorek\SavedVariables

Fom: D:\source\Lorek\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Lorek\SavedVariables

Fom: D:\source\Lucjan\SavedVariables\ElvUI.lua
To: D:\destination\source\Lucjan\SavedVariables

Fom: D:\source\Lucjan\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Lucjan\SavedVariables

Fom: D:\source\Margaret\SavedVariables\ElvUI.lua
To: D:\destination\source\Margaret\SavedVariables

Fom: D:\source\Margaret\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Margaret\SavedVariables

Fom: D:\source\Nelia\SavedVariables\ElvUI.lua
To: D:\destination\source\Nelia\SavedVariables

Fom: D:\source\Nelia\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Nelia\SavedVariables

Fom: D:\source\Novak\SavedVariables\ElvUI.lua
To: D:\destination\source\Novak\SavedVariables

Fom: D:\source\Novak\SavedVariables\ElvUI.lua.bak
To: D:\destination\source\Novak\SavedVariables
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...