Python 3.7.1 Копирование всех файлов из одного источника в список папок, созданных из .xlsx

Моя история гласит, что я собираюсь продолжать получать файл .xlsx со списком вещей. Все вещи существуют в определенном листе.

Я создал Tkinter, чтобы помочь выбрать лист для выбора.

Оттуда он создает базовую файловую структуру со столбцом A1 листа в качестве родительского каталога и всеми остальными в списке (столбец A) в качестве подпапок.

А теперь то, с чем у меня проблемы. Я хочу скопировать 7 файлов из источника (Loc) в каждую итерацию только что созданных папок.

После того, как я создал файлы (.DocX ​​и .ppt), я хочу переименовать каждый из них, указав папку перед существующим именем файла (т.е. если исходный файл был «abc.docx», а новая созданная папка была «\ xyz", то новый созданный файл будет "xyz abc.docx"

Я знаю, что это беспорядок, но это мой первый проект в реальном мире, и я бы очень хотел запустить его.

from tkinter import *
from tkinter import Tk
from tkinter.filedialog import askopenfilename
import tkinter.filedialog as filedialog
import pandas as pd 
import xlrd
import string
import os
from tkinter import messagebox
import shutil
import sys
from pathlib import Path
# Define file types to open
ftypes = [
    ('Excel', '*.xls;*.xlsx;*.csv'), 
    ('Text files', '*.txt'), 
    ('All files', '*'), 
]
#Start tkinter
master = Tk()
#Show an "Open" dialog box and return the path to the selected file
FileName = filedialog.askopenfilename(filetypes=ftypes)
#print(FileName)

#Looking at the file with pandas
xl = pd.ExcelFile(FileName)
SheetNames = xl.sheet_names  # see all sheet names

L = Label(master, text = FileName)
L.pack()

#Create a selection window
w = Label(master, text = "Select the sheet to create the directories from")
w.pack()
V = StringVar(master)
V.set(SheetNames[0]) # default value

#option menu on the tkinter window
w = OptionMenu(master, V, *SheetNames)
w.pack()

#Define what the OK and Close buttons do on the sheet selection window
def ok():
    print (V.get())
    master.quit()
def CloseWindow(): 
    import sys
    master.destroy()
    sys.exit()

#OK and Close button display settings
OkButton = Button(master, text = "OK", command=ok)
OkButton.pack()
CloseButton = Button(master, text = "Close", command=CloseWindow)
CloseButton.pack()
#print (w)
mainloop()
#print (SheetNames)

#Set folder save location

SaveLocation = filedialog.askdirectory(title='Please select a directory to create the folders')
S = Label(master, text = "Save location " + SaveLocation)
S.pack()
#print (SaveLocation)
#print (V.get())

#Starting to iterate through the spreadsheet


Workbook = xlrd.open_workbook(FileName)
Sheet = Workbook.sheet_by_name(V.get())
#Number of rows in the sheet
SNRows = (Sheet.nrows)
#Value of first cell in the sheet
SCValues = Sheet.cell_value(0, 0)


print (SCValues)
print (SNRows)

#Create Parent folder
ParentFolder = (SaveLocation +"/" + SCValues)
os.path.exists(ParentFolder)
if not os.path.exists(ParentFolder):
    os.makedirs(ParentFolder, exist_ok=True)

#Create sub-folders
DropBox = filedialog.askdirectory(title='Please select the base directory of DropBox')
FileLocation = "/Factory/Admin/Templates/1. Competency"
Loc = (DropBox + FileLocation)

for i in range(1, SNRows):
    SF = Sheet.cell_value(i, 0)
    SubFolders = (ParentFolder +"/" + SF)
    #print (SF)
    os.makedirs(SubFolders, exist_ok=True)
    #shutil.copytree(Loc, SubFolders)
    for folderName, S, File in os.walk(ParentFolder):
        #print ('The current folder is ' + folderName)
        shutil.copytree(Loc, S)
    #print(SubFolders)


#Dropbox access to access contents of directory and copy into subfolders
for F, S, File in os.walk(ParentFolder):
    print (S)


#Rename contents of subfolders

`

Итак, с какой проблемой вы столкнулись в настоящее время с этим кодом? Пожалуйста, добавьте больше деталей к проблеме, это поможет ответчикам лучше понять вашу проблему. Я знаю, что вы столкнулись с проблемой переименования, но, пожалуйста, добавьте то, что вы пытались переименовать.

hygull 30.01.2019 03:30

Проблема, с которой я сталкиваюсь, заключается в переборе списка для копирования файлов в папки в списке. Практически все, начиная с #Create subfolders и ниже. С Shutil.copytree я продолжаю получать, что папка уже существует. Я пытался использовать copytree, чтобы просто создать сами папки, но он делает это для первого файла и выдает ошибки с огромным списком ошибочных папок. Текущий код попадает в TypeError: ожидаемая строка, байты или объект os.PathLike, а не список

Adrian Charles Blood 30.01.2019 03:48

Какова структура ваших файлов Excel, то есть как выглядят их записи? Вы можете проверить stackoverflow.com/questions/1868714/…. Думаю, будет полезно разобраться в вашей проблеме. Дайте мне знать в комментариях, если вы застряли.

hygull 30.01.2019 04:21

Вся структура находится в одном столбце (A) и имеет разную длину. Первая запись — это главный каталог, а каждая вторая запись создает вложенные папки. Это буквально A1 — название проекта, A2 — Subfolder1, A3 — Subfolder2, A4 — Subfolder3 и т. д.

Adrian Charles Blood 30.01.2019 06:17
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
121
0

Другие вопросы по теме