Как автоматизировать определенные задачи с помощью Python? - PullRequest
0 голосов
/ 12 января 2020

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

Существует ли универсальный способ автоматизации программных задач с помощью Python? Я создал нечто похожее на это в прошлом (код ниже). Эта программа в основном только что сказала программе (SAOIMAGEDS9) открывать файлы из указанной c папки и сохранять их как определенный c тип файла в новой папке.

import os
import subprocess
import tkinter as tk
root = tk.Tk()

canvas1 = tk.Canvas(root, width = 700, height = 700,)
canvas1.pack()

target_directory = 'C:/dir/' # change this as required
target_write_directory = 'C:/dir/'

def begin_conversion(): #function first conversion
    zipped_files = [x for x in os.listdir(target_directory)if x.lower().endswith('.fits.fz')]
    for filename in zipped_files:
        print(os.path.abspath(filename))
        subprocess.call([r'C:/SAOImageDS9/ds9.exe', os.path.abspath(filename), '-savefits', os.path.abspath(target_write_directory + filename[:-3]), '-exit'])

createBatButton = tk.Button (root, text = '          convert              ', command = begin_conversion)
canvas1.create_window(350,320, window = convert)

root.mainloop()

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

Ниже приведено то, что у меня есть

import os
import subprocess

target_directory = 'C:/read_directory/' # change this as required make sure to leave a / at the end.
target_write_directory = 'C:/write_directory/' # also change this as needed and leave a / at the end.

def automateProcess(): #Execute the astrometrica commands.
    targetFiles = [x for x in os.listdir(target_directory)if x.lower().endswith('.fits')]
    for filename in targetFiles:
        subprocess.call([r'C:/Astrometrica.exe', os.path.abspath(filename), '-load','-', '-savefits', os.path.abspath(target_write_directory + filename[:-3]), '-exit'])

automateProcess()

root.mainloop()

Вместо -savefits и -exit Мне нужно выполнить множество очень специфических и утомительных задач в рамках программы "Astrometrica" ​​

...