#python
#python
Вопрос:
Я создаю скрипт python для преобразования всех файлов в папке в другой формат, указанный пользователем, но я хотел только один раз указать местоположение для сохранения файлов. Я уже пытался использовать askdirectory (), но выдает странную ошибку, что каталог, в котором находятся файлы, совпадает с тем, где они будут сохранены, даже добавляя разные переменные.
import glob
import img2pdf
from pathlib import Path
from tkinter import Tk
from tkinter.filedialog import askdirectory
def img_to_pdf(arq, savefile):
with open(f"{str(arq)[0:-4]}.pdf", "wb") as f:
f.write(img2pdf.convert(arq))
def convert(filelocal, inpt, outpt, savefile):
path = Path(str(filelocal))
for arq in path.glob('*'):
if arq.endswith(str(inpt)):
if inpt == ".png" and outpt == ".pdf":
img_to_pdf(arq, savefile)
def localfile():
Tk().withdraw()
filelocal = askdirectory()
return filelocal
def filesave():
Tk().withdraw()
savefile = askdirectory()
return savefile
if __name__ == '__main__':
inpt = ".png"
outpt = ".pdf"
filelocal = localfile()
savefile = filesave()
convert(filelocal, inpt, outpt, savefile)
Любые предложения о том, как я могу решить эту проблему? Поскольку решения, которые я нашел до сих пор, помогают только в том случае, если требуется сохранить один файл, поэтому для каждого файла в папке он снова запрашивает местоположение. Я хочу определить местоположение для сохранения по умолчанию.
Комментарии:
1. Пожалуйста, укажите фактическую ошибку
2. Судя по всему,
f.write(img2pdf.convert(arq))
это даже не учитывает вашеsavefile
местоположение. Вы должны указать целевое местоположение в своемwith open(...)
. Если вы просто хотите скопировать файл, я предлагаю вам заглянуть в shutil: docs.python.org/3/library/shutil.html3. Если
img_to_pdf
следует использовать выбранный каталог, было бы неплохо использовать этот каталог. Вы нигде не используетеoutpt
.
Ответ №1:
Я думаю, что я был не очень понятен с образцом кода, но я уже решил проблему. Если у кого-то возникает тот же вопрос, я сделал это так: вместо того, чтобы конвертировать файлы один за другим, функция получает список с путем ко всем из них и функцией askdirectory(), которую я открываю в функции, которая будет конвертировать, затем я выполняю цикл for для преобразованияфайл за файлом и переместите в папку назначения.
вот так:
def img_to_pdf(arq):
save_file = str(askdirectory(initialdir="/home"))
for i in arq:
fullname = str(i)[0:-4] '.pdf'
with open(fullname,"wb") as f:
f.write(img2pdf.convert(str(i)))
shutil.move(fullname, save_file)