python自动化:uiautomation、pyautogui操作会计记账系统(5):财务公开
#coding=utf-8
#Beijia To Excel accounting disclosure财务公开
import xlrd, xlwt, pyautogui, time, pyperclip, openpyxl,pandas,os, tkinter,\
datetime, win32gui, uiautomation, subprocess, xlwings,json, easygui
pyautogui.PAUSE = 1
mont_list =['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
mont_input = 12
year_input = 2021
def creat_file(year_input):
print('开始运行创建文件夹自定义函数……')
with open('**电脑端账套号生成村委会文件夹用.txt', 'r') as f:
dic = []
for line in f.readlines():
line = line.strip('\n') # 去掉换行符\n
b = line.split('\t') # 将每一行以空格为分隔符转换成列表
#print(list(b))
dic.append(b)
print(dic)
admin_villi_dict=dict(dic)
print('账套所在的村委会文件夹列表是:')
print(admin_villi_dict)#列表转字典
if not os.path.exists('D:\**会计系统导出数据'):
os.mkdir('D:\**会计系统导出数据')
admin_villi_list=['前锋', '西海', '八家', '冲洋', '新围', '竹洛', '竹湖', '新屋', '达材', '朝中', '官窦', '伞塘', '白岗', '稔坪', '西坑', '三和', '居委']
year = time.strftime("%Y")
#print("当前年份是:", year)
if year_input==year:#等于
time1 = time.strftime("%Y%m%d", time.localtime()) # 加上秒不会出现同名
else:
time1= year_input #赋值
#print('创建第3层文件夹folder3_1')
folder3_1 = r"D:\**会计系统导出数据" + '\\' + time1 + '财务公开系列表'
#print('判断文件夹是否存在,不存在则创建,文件保存在:'+folder3_1)
if not os.path.exists(folder3_1):
os.mkdir(folder3_1)
#print('创建第4层文件夹folder4_i')
for i in range(0,16):
folder_admin_villi=time1+admin_villi_list[i]+'财务公开系列表'
folder4_i=r'D:\**会计系统导出数据'+'\\'+ time1 + '财务公开系列表'+'\\' +folder_admin_villi
if not os.path.exists(folder4_i):
os.mkdir(folder4_i)
#print('创建文件夹:'+folder4_i)
return admin_villi_dict,folder3_1
def check_file(folder3_1):
# 打开文件
path= folder3_1
dirs = os.listdir(path)
year = time.strftime("%Y")
file_accnt_num_list=[]
for home, dirs, files in os.walk(path):
for file_name in files:
#filelist.append(os.path.join(home, file_name))
if os.path.splitext(file_name)[1] == '.xls':
#print(file_name)
file_year = file_name[0:4] # 截取文件名前4个字符
#print(file_year)
# os.rename(file, new) # 进行重命名
if file_year == year:
# 取整方法是可以去除0,但是遇到字符串不能转化为整型会报错
# file_accnt_num=int(file_name[9:12])
s = file_name[9:12]
file_accnt_num = "".join(s[::1]).lstrip("0")
#print(file_accnt_num)
else:
s = file_name[5:8]
file_accnt_num = "".join(s[::1]).lstrip("0")
#print(file_accnt_num)
file_accnt_num_list.append((file_accnt_num))
#print(filelist)
#print(file_accnt_num_list)
#print('对列表进行排序,查找时可能减少遍历次数。也便于根据账套号顺序查找')
#file_accnt_num_list2=file_accnt_num_list.sort()
#print('sort影响列表本身,sorted不影响列表本身,用sort排序')
file_exist_list = sorted(file_accnt_num_list)
print('已导出的文件列表','file_exist_list:')
print(file_exist_list)
print('已导出的文件数量',len(file_exist_list))
return file_exist_list
def accnt_login(account_Num):
wc1 = uiautomation.WindowControl(searchDepth=1, Name='帐套登陆')
# 设置为顶层
#pyautogui.alert(text="按回车键继续程序", title="提示") # 窗口前置才能用键盘快捷键
wc1.SetTopmost(True) # 置顶能用快捷键
pc2_1= wc1.PaneControl(searchDepth=1, Name='帐套信息')
ec3_8=pc2_1.EditControl(searchDepth=1, Name='', foundIndex=2)
ec3_8.SetFocus()
#print('ec3_8')
#print('账套号输入框的位置是:')
#print(ec3_8.BoundingRectangle)
pyperclip.copy(account_Num) #account_Num是账套号
pyautogui.hotkey('ctrl', 'v')