Я пытаюсь подсчитать количество файлов в каталоге, в котором я сохраняю свои отчеты. Если количество файлов не равно X + 1, я хотел бы повторно запустить среднюю часть кода, загружающего отчет. Я должен использовать этот метод, потому что я имею дело с CSV-файлами, и они загружаются в последовательном порядке (Report (1), Report (2), ect.). Затем я меняю имена этих отчетов на настоящие имена позже в коде.Python: если подсчитано количество файлов не равно x, то повторите попытку отчета
import time
import os
import os.path
import glob
import shutil
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import MoveTargetOutOfBoundsException
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
files = glob.glob('/Users/me/Desktop/AUTOREPORTS/*')
for f in files:
os.remove(f)
open('/Users/me/Desktop/AUTOREPORTS/report.csv', "w")
for x in range(1, 73):
while True:
try:
fp = webdriver.FirefoxProfile('C:/Users/me/Documents/FirefoxProfile')
browser = webdriver.Firefox(fp)
browser.get('https://website.com/')
time.sleep(8)
browser.find_element_by_id("ctl00_PlaceHolderMain_login_UserName").clear()
browser.find_element_by_id("ctl00_PlaceHolderMain_login_UserName").send_keys("USER")
browser.find_element_by_id("ctl00_PlaceHolderMain_login_password").clear()
browser.find_element_by_id("ctl00_PlaceHolderMain_login_password").send_keys("PWD")
browser.find_element_by_id("ctl00_PlaceHolderMain_login_login").click()
#gets user to reporting front end
ReportMgr= browser.find_element_by_partial_link_text('Report Manager')
ReportMgr.click()
time.sleep(5)
CustomReport= browser.find_element_by_partial_link_text('Custom Report')
CustomReport.click()
time.sleep(5)
ProgramManagement= browser.find_element_by_partial_link_text('Program Management')
ProgramManagement.click()
ProgramManagement= browser.find_element_by_partial_link_text('Program Management').send_keys(Keys.ARROW_LEFT)
#pulls reports
browser.find_element_by_partial_link_text('Program Management').click()
time.sleep(60)
browser.find_element_by_partial_link_text('Program Management').send_keys(Keys.ARROW_DOWN * x, Keys.ENTER)
time.sleep(60)
try:
browser.find_element_by_css_selector("#ctl00_PlaceHolderMain_ReportViewer1_HtmlOutputReportResults2_updateFilters_TitleAnchor").click()
except NoSuchElementException:
pass
time.sleep(140)
browser.find_element_by_css_selector("#ctl00_PlaceHolderMain_ReportViewer1_HtmlOutputReportResults2_CSVButton_ImageAnchor > img").click()
time.sleep(140)
fname = "Report(%s).csv" % (x)
os.chdir('/Users/me/Desktop/AUTOREPORTS')
browser.quit()
#counts number of files in DIR
path = 'C:/Users/me/Desktop/AUTOREPORTS'
count = len([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))])
print count
#end count of number of files in DIR
except:
browser.quit()
continue
else:
break
Это часть кода, где я получаю количество - однако я не уверен, что сказать Python, что если этот счетчик не равен X + 1 затем попробовать повторить (х):
#counts number of files in DIR
path = 'C:/Users/me/Desktop/AUTOREPORTS'
count = len([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))])
print count
#end count of number of files in DIR
В этом проблема. Я не знаю, что делать :(Я думаю, что это может быть, если count == x + 1: # равно print count elif count! = Count + 1: # не равно x - 1 продолжить – Yogwhatup
@Yogwhatup , Извлеките среднюю часть, которую вам нужно переустановить в функцию. Затем вызовите функцию, если вам нужно повторно загрузить отчет. – DuckPuncher
Это привело меня туда, где мне нужно было - очень благодарен! – Yogwhatup