pyhton控制鼠标动作,批量读取csv文件并保存
控制鼠标动作
"""控制鼠标自动完成点击
下载文件到指定路径下"""import time
import pyautogui as pag
import sys
import oscurve_icon_x,curve_icon_y = (800,300)
y_interval = 34menu_pos_x,menu_pos_y = (905,232)download_CSV_x,download_CSV_y =(860,385 )close_x,close_y = (945,111)next_page_x,next_page_y = (667,232)blank_x,blank_y = (1047,129)folderPath = r"C:\Users\cvipub\Desktop\新建文件夹"
downloaded_csv_num = 0
finished_page_num = 0
finished_downloaded_file_num = 0def folder_csv_num(myFolderPath):#返回指定文件夹下的指定类型的文件数files= os.listdir(myFolderPath) #得到文件夹下的所有文件名称csvFiles = [f for f in files if f.endswith(".csv") ] #print(csvFiles)return len(csvFiles)def download_whole_page():pag.moveTo(blank_x,blank_y,duration = 0.1)pag.click()time.sleep(1)for i in range(20):pag.moveTo(curve_icon_x,curve_icon_y+i*y_interval ,duration = 0.1)pag.click()time.sleep(2)pag.moveTo(menu_pos_x,menu_pos_y,duration = 0.1)pag.click()time.sleep(1)pag.moveTo(download_CSV_x,download_CSV_y,duration = 0.1)pag.click()time.sleep(1)pag.moveTo(close_x,close_y,duration = 0.1)pag.click()time.sleep(1)pag.moveTo(next_page_x,next_page_y,duration = 0.1)pag.click()time.sleep(10)global downloaded_csv_numdownloaded_csv_num += 20def download_partial_page(current_page_item_num):pag.moveTo(blank_x,blank_y,duration = 0.1)pag.click()time.sleep(1)for i in range(current_page_item_num):pag.moveTo(curve_icon_x,curve_icon_y+i*y_interval ,duration = 0.1)pag.click()time.sleep(2)pag.moveTo(menu_pos_x,menu_pos_y,duration = 0.1)pag.click()time.sleep(1)pag.moveTo(download_CSV_x,download_CSV_y,duration = 0.1)pag.click()time.sleep(1)pag.moveTo(close_x,close_y,duration = 0.1)pag.click()time.sleep(1) time.sleep(10)global downloaded_csv_numdownloaded_csv_num += current_page_item_numdef check_download(myFolderPath):#print("downloaded_csv_num:"+str(downloaded_csv_num))#print("finished_downloaded_file_num:"+str(finished_downloaded_file_num))#print("folder_csv_num(myFolderPath:"+str(folder_csv_num(myFolderPath))) return (downloaded_csv_num + finished_downloaded_file_num) \== folder_csv_num(myFolderPath)itemNum = int(input("请输入总共需要下载的csv文件数量:"))
complete_pages_num = itemNum
last_page_item_num = itemNum % 20finished_downloaded_file_num = int(input("请输入已完成下载" + \"的csv文件数量(20的倍数):"))
finished_page_num = finished_downloaded_file_num
print("10秒准备时间!")
time.sleep(10)############################################
for i in range(complete_pages_num):print("正在下载第"+str(finished_page_num+i+1)+"页...")download_whole_page()if check_download(folderPath):pass else:print("第"+str(finished_page_num+i+1)+"页下载失败,程序中断!!!")sys.exit(0) #程序终止print("正在下载最后一页...")
download_partial_page(last_page_item_num)
if check_download(folderPath):pass
else:print("最后一页下载失败,程序中断!!!")sys.exit(0) #程序终止print("全部文件下载完成,程序结束,正常退出...")"""
pag.moveTo(blank_x,blank_y,duration = 1)
pag.rightClick()
pag.click()""""""
终止程序
sys.exit(0)""""""while True:time.sleep(2)x,y = pag.position()print("x = "+str(x)+",y = " +str(y) )""""""
控制程序暂停5秒
time.sleep(5)
"""
批量读取csv文件并保存
'''
程序实现功能:
1逐个打开源路径下的所有csv文件
2读取每个文件中相应数据
3将CSV文件另存到目标文件夹下并重命名cxq负责:FL-013R(2183)和T1-006L2(2311)文件命名:螺栓编号(即控制器名称即IP名称)+Pset ID值+结果数量+模式(OK/NOK)
如:C1-006R-1-69031-OK.csv和C1-006R-1-69030-OK.csv 其螺栓编号为C1-006R
或:C2-004L-2-101861-NOK.csv和C2-004L-3-101862-NOK.csv 螺栓编号为C2-004L每种IP名称(即控制器名称)对应的曲线分别存放IP名称+Pset ID值的文件夹,
例如,C1-006R的螺栓的曲线可以存放于C1-006R-1文件夹。举例如下:
C1-006R-1文件夹下会有
C1-006R-1-69031-OK.csv、
C1-006R-1-69030-OK.csv、
C1-006R-1-69029-NOK.csv等文件
'''import os
import csv
import shutildef main(args):#获取源文件夹所在路径source_path = r"C:\Users\chenxuqi\Desktop\标注数据\vm标注数据"print("源文件示例:\n"+source_path)source_path = input("请输入源文件夹所在路径:")source_path = source_path.replace('\\','/')source_path = source_path.strip()if(not source_path):print("源文件夹路径输入错误,程序终止!")return 0print("源文件夹位置: " + source_path+"\n\n")#获取目标文件夹名称,比如:FL-013R-2destination_path = r"FL-013R-2"print("目标文件示例:\n"+ destination_path)destination_path = input("请输入目标文件夹的名称(不含路径):")destination_path = destination_path.strip()CtrlID_PsetID = destination_path #螺栓编号(即控制器名称即IP名称)即:FL-013R-2 destination_path = source_path + "/" +destination_pathif os.path.exists(destination_path):print("文件夹:"+destination_path+" 已存在,无需重复创建!!!")else:os.makedirs(destination_path)print("新文件夹: "+ destination_path + " 创建成功!!!")files= os.listdir(source_path) #得到文件夹下的所有文件名称i = 0for file in files: #遍历文件夹#print(file)if ((not os.path.isdir(file))and file.endswith(".csv")):i += 1with open(source_path+"/"+file, encoding='UTF-8')\as CsvFile:reader = csv.reader(CsvFile)next(reader)second_row = next(reader)result_num = second_row[0].split(';')[4]#得到结果数量src_store = source_path+"/"+filedst_store = destination_path +'/' +\CtrlID_PsetID + "-" + result_num +"-OK.csv"print("开始步骤",i,",显示源文件和目标文件************")print(src_store)print(dst_store)shutil.copyfile(src_store,dst_store)print("结束步骤",i,",复制文件成功*******************\n")return 0if __name__ == '__main__':import syssys.exit(main(sys.argv))