मैं अलग-अलग एक्सटेंशन वाले अलग-अलग फ़ोल्डरों से दो अलग-अलग फाइलों की तुलना करने की कोशिश कर रहा हूं और फिर एक फाइल को pywinauto के साथ खोलने की कोशिश कर रहा हूं। एप्लिकेशन खुलता है हालांकि एक्सटेंशन वाली फाइलें जो मैं उल्लेख कर रहा हूं वह नहीं खुलती है।

मैंने कई फाइलों पर पुनरावृति करने की कोशिश की, यह काम नहीं किया मैंने एक विशिष्ट फ़ाइल नाम दिया। बस आवेदन खुलता है।

नीचे वह कोड है जिसकी मैंने कोशिश की है।

from pywinauto.application import Application
import os
app = Application(backend="uia").start('C:\Program Files (x86)\Datawatch Monarch 14\DWMonarch.exe')
#app.Dialog.print_control_identifiers()
path = (r'C:\Check\Monarch\ICRDIS.dprj')
path2 = (r'C:\DOLV\ICRDIS.txt')

name1 = path.rsplit('.', 1)[0] 
name2 = path2.rsplit('.', 1)[0]

#for name1 in path:
 #   for name2 in path2:
if name1 == name2:
    try:
        print(name1)
        app.Dialog.child_window(title="Open", auto_id="Open", control_type="SplitButton")
        app.Dialog.child_window(title="File", auto_id="PART_ApplicationButton", control_type="Button")
        app.Dialog.Menu.Open(path.dprj)
                #app.Dialog.Open('name1.dprj')
    except:
        print("No File Name Matches")

यह ओपन विकल्प के साथ मोनार्क के लिए नियंत्रण पहचानकर्ता है:

 Menu - 'Ribbon'    (L-4, T30, R1924, B171)
   | ['RibbonMenu', 'Ribbon', 'Menu']
   | child_window(title="Ribbon", auto_id="MainRibbon", control_type="MenuBar")
   |    | 
   |    | Separator - ''    (L26, T1, R29, B21)
   |    | ['17', 'Separator3']
   |    | child_window(auto_id="beforeSeparator", control_type="Separator")
   |    | 
   |    | SplitButton - 'Open'    (L31, T-3, R72, B25)
   |    | ['OpenSplitButton', 'Open', 'SplitButton', 'SplitButton0', 'SplitButton1']
   |    | child_window(title="Open", auto_id="Open", control_type="SplitButton")

कुछ प्रश्न मैं उल्लिखित नियंत्रणों का उपयोग करके विशिष्ट एप्लिकेशन को कैसे खोलूं और एकाधिक फाइलों पर पुनरावृति करूं।

इसके लिए काम नहीं करने के लिए मैं क्या गलत कर रहा हूँ? कृपया सुझाव दे।

सादर, रेन।

1
Ren Lyke 8 अक्टूबर 2018, 21:47

1 उत्तर

सबसे बढ़िया उत्तर

सुझावों के लिए धन्यवाद वसीली। नीचे मेरा पूरा कोड है जो काम करता है।

import os
import shutil
from pywinauto.application import Application
from pywinauto import Desktop
import pandas as pd
from datetime import date
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from os import walk
from os.path import splitext
import subprocess
import time
from time import sleep

monarch_files = r'C:\Health Check\Support Monarch Project'
monarchPath = 'C:\Program Files (x86)\Datawatch Monarch 14\DWMonarch.exe'
fileformat ='xprj'
fileformat2='dprj'

rundate = date.today()

job_name = pd.read_excel(r'C:\Check\Job Name.xlsx',
                     sheet_name = 'JobName',
                     header = 0
                     )
for index , row in job_name.iterrows():
    jobname = row['JobName']
    filename=row['ReportName']

    for file_name in dolv_files:
        fname=file_name.rsplit('.', 1)[0]
        if fname==filename:
            print(jobname)
            file_open = os.path.join(monarch_files,jobname + "." + fileformat)
            file_open1 = os.path.join(monarch_files,jobname + "." + fileformat2)
            if os.path.exists(file_open):
                subprocess.Popen([monarchPath,file_open])
                sleep(10)
                dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
                sleep(5)
                try:
                    dlg.Resolve_Missing_Model_Files.OK.invoke()
                    dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
                    dlg.Export.invoke()
                    dlg.Select_All_Exports.invoke()
                    dlg.Run_Exports.invoke()
                    sleep(5)
                    dlg.close()
                    try:
                        dlg.No.invoke()
                    except:
                           print('e')
                except:
                    dlg.Export.invoke()
                    dlg.Select_All_Exports.invoke()
                    dlg.Run_Exports.invoke()
                    sleep(5)
                    dlg.close()
                    try:
                        dlg.No.invoke()
                    except:
                            print('e')
            elif os.path.exists(file_open1):
                    subprocess.Popen([monarchPath,file_open1])
                    dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
                    sleep(5)
                    try:
                        dlg.Resolve_Missing_Model_Files.OK.invoke()
                        dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
                        dlg.Export.invoke()
                        dlg.Select_All_Exports.invoke()
                        dlg.Run_Exports.invoke()
                        sleep(5)
                        dlg.close()
                        try:
                            dlg.No.invoke()
                        except:
                               print('e')
                    except:
                        dlg.Export.invoke()
                        dlg.Select_All_Exports.invoke()
                        dlg.Run_Exports.invoke()
                        sleep(5)
                        dlg.close()
                        try:
                            dlg.No.invoke()
                        except:
                            print('e')                       
            else:
                print("File Not Found")

सादर, रेन।

1
Ren Lyke 11 अक्टूबर 2018, 19:50