AttributeError: module ‘os‘ has no attribute ‘PathLike‘
这个问题是安装高版本的库导致部分脚本无法运行
解决办法:
2024年01月29日
AttributeError: module ‘os‘ has no attribute ‘PathLike‘
这个问题是安装高版本的库导致部分脚本无法运行
解决办法:
2024年01月26日
# -*- coding:utf-8 -*- import json import openpyxl import xlrd import csv import os import time import sys import datetime import requests import re def traverse_dir(path): traverse_dir_data = [] for file in os.listdir(path): file_path = os.path.join(path, file) if os.path.isdir(file_path) == False: filename = file_path.split('.') lastindex = len(filename) - 1 if filename[lastindex] == 'xls' or filename[lastindex] == 'xlsx' or filename[lastindex] == 'csv': traverse_dir_data.append(file_path) return traverse_dir_data def show_time(): current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') print("现在时间是: " + str(current_time)) def explain_excel(path, index=0): file_data = [] if path[-3:] == 'xls': workbook = xlrd.open_workbook(path) workbook_sheet = workbook.sheet_by_index(index) workbook_sheet_rows = workbook_sheet.nrows if workbook_sheet_rows > 0: for row_i in range(0, workbook_sheet_rows): if len(workbook_sheet.row_values(row_i)) > 0: file_data.append(workbook_sheet.row_values(row_i)) if path[-4:] == 'xlsx': workbook = openpyxl.load_workbook(path) for row_data in workbook.worksheets[index].values: if len(row_data) > 0: file_data.append(row_data) return file_data def explain_csv(path): file_data = [] if path[-3:] == 'csv': csv_reader = csv.reader(open(path)) for text in csv_reader: if len(text) > 0: file_data.append(text) return file_data # 解析并导出文件内容 def explain_file(path): file_data = [] path_data = path.split('.') lastindex = len(path_data)-1 if path_data[lastindex] == 'xls' or path_data[lastindex] == 'xlsx': file_data = explain_excel(path) if path_data[lastindex] == 'csv': file_data = explain_csv(path) return file_data def upload_data(excel_data,excel_i,filename): errfile = [] if len(excel_data) < 2: print('文件没有内容') else: excel_content = '' excel_obj = [] ed_i = 0 upload_count = 50 for ed in excel_data: if ed_i >= 0: excel_obj.append({ 'number': ed_i, 'tracking_no': ed[0], 'buyer_name': ed[1], 'buyer_mobile': ed[2], 'buyer_address': ed[3] }) excel_i = excel_i + 1 ed_i = ed_i + 1 if excel_i > 0: show_time() post_data = [] all_count = len(excel_obj) print('共有' + str(all_count) + '条记录待上传') for item in excel_obj: postdata_count = len(post_data) if postdata_count == upload_count: print('分批开始上传' + str(postdata_count) + '条数据') current_path = current_dir + '\\' + datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.json' print(current_path) f = open(current_path, 'w', encoding='utf-8') f.write(json.dumps(post_data, ensure_ascii=False)) f.close() url = 'http://lbb-chrome-api2.alible.cn/chrome/v3/batch_insert_order' files = {'order': open(current_path, 'rb')} r = requests.post(url, files=files, timeout=600) try: data = r.json() print(data['data']['result']) except: print(r.status_code) if r.status_code == 502: errfile.append(filename) all_count = all_count - upload_count print('分批上传结束') print('还剩下' + str(all_count) + '条数据待上传') post_data.clear() sys.stdout.flush() print('暂停10秒再上传') time.sleep(10) else: post_data.append(item) print('剩余'+str(all_count)+'条') if all_count > 0: print('分批开始上传' + str(all_count) + '条数据') current_path = current_dir + '\\' + datetime.datetime.now().strftime( '%Y-%m-%d-%H-%M-%S') + '.json' print(current_path) f = open(current_path, 'w', encoding='utf-8') f.write(json.dumps(post_data, ensure_ascii=False)) f.close() url = 'http://lbb-chrome-api2.alible.cn/chrome/v3/batch_insert_order' files = {'order': open(current_path, 'rb')} r = requests.post(url, files=files, timeout=600) try: data = r.json() print(data['data']['result']) except: print(r.status_code) if r.status_code == 502: errfile.append(filename) print('分批上传结束') else: print('no file to export') return errfile if __name__ == '__main__': os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'cacert.pem') # 当前路径 print('开始遍历目录') current_dir = os.path.abspath('.') file_path_data = traverse_dir(current_dir) finish = [] errorFile = [] for f in file_path_data: excel_i = 0 show_time() print('开始读取文件') print(f) excel_data = explain_file(f) _errorFile = upload_data(excel_data, excel_i, f) if len(_errorFile) > 0: errorFile.append(''.join(_errorFile)) finish.append(f) f_length = len(finish) print('已经传完'+str(f_length)+'个文件,包括'+str(finish)) if len(errorFile) > 0: print('出错文件,包括' + ''.join(errorFile)) print('暂停10秒钟,继续读取下一个文件') show_time() time.sleep(10) print('结束所有文件上传') show_time()
2024年01月26日
# -*- coding:utf-8 -*- import openpyxl import xlrd import csv import os import time import sys import datetime def show_message(message=''): print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), str(message)) def explain_excel(path, index=0): file_data = [] if path[-3:] == 'xls': workbook = xlrd.open_workbook(path) workbook_sheet = workbook.sheet_by_index(index) workbook_sheet_rows = workbook_sheet.nrows if workbook_sheet_rows > 0: for row_i in range(0, workbook_sheet_rows): if len(workbook_sheet.row_values(row_i)) > 0: file_data.append(workbook_sheet.row_values(row_i)) if path[-4:] == 'xlsx': workbook = openpyxl.load_workbook(path) for row_data in workbook.worksheets[index].values: if len(row_data) > 0: file_data.append(row_data) return file_data def explain_csv(path): file_data = [] if path[-3:] == 'csv': csv_reader = csv.reader(open(path)) for text in csv_reader: if len(text) > 0: file_data.append(text) return file_data # 解析并导出文件内容 def explain_file(path): explain_filename = path.replace('\\', '/').split('/') explain_filename = explain_filename[-1].split('.') explain_filename = explain_filename[0] file_data = [] path_data = path.split('.') if path_data[-1] == 'xls' or path_data[-1] == 'xlsx': file_data = explain_excel(path, int(sys.argv[4])) if path_data[-1] == 'csv': file_data = explain_csv(path) return file_data def split_mobile(mobile): province = ['上海市', '云南省', '内蒙古自治区', '北京市', '吉林省', '四川省', '天津市', '宁夏回族自治区', '安徽省', '山东省', '山西省', '广东省','广西壮族自治区', '广西省', '新疆维吾尔自治区', '江苏省', '江西省', '河北省', '河南省', '浙江省', '海南省', '湖北省', '湖南省', '甘肃省', '福建省', '西藏自治区', '贵州省', '辽宁省', '重庆市', '陕西省', '青海省', '黑龙江省', '上海', '云南', '内蒙古', '北京', '吉林', '四川', '天津', '宁夏', '安徽', '山东', '山西', '广东', '广西', '新疆', '江苏', '江西', '河北', '河南', '浙江', '海南', '湖北', '湖南', '甘肃', '福建', '西藏', '贵州', '辽宁', '重庆', '陕西', '青海', '黑龙江'] for p in province: mobile = mobile.replace(p," ") addressData = mobile.split(" ") if len(addressData)>1: mobile = addressData[0] return mobile if __name__ == '__main__': os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'cacert.pem') # 记录 excel 内容 excel_rows = [] tmp_file_data = [] # excel 行数记数 excel_i = 0 # 当前路径 current_dir = os.path.abspath('.') current_path = current_dir + "\\" + sys.argv[1] excel_data = explain_file(current_path) if len(excel_data) < 2: print('文件: ' + sys.argv[1] + ' 没有内容') else: wb = openpyxl.Workbook() ws = wb.create_sheet('Sheet1', 0) ws.append(['快递单号', '姓名', '电话', '地址']) ed_i = 0 for ed in excel_data: has_ed = False if ed_i >= 0: tracking_i = int(sys.argv[2]) address_i = int(sys.argv[3]) if ed[tracking_i] != None and ed[address_i] != None: tmp_address = str(ed[address_i]) addressData = tmp_address.split(' ') if len(addressData) == 3: name = addressData[0] mobile = addressData[1] address = addressData[2] ws.append([ed[tracking_i], name, mobile, address, ed_i]) excel_i = excel_i + 1 continue tmp_address = tmp_address.replace(' ', '') tmp_address = tmp_address.lstrip() tmp_address = tmp_address.replace(',', '') addressData = tmp_address.split(' ') if len(addressData) > 3: for a in addressData: try: if a == str(int(a)) and len(a) < 11: tmp_address = tmp_address.replace(' ', '') addressData = tmp_address.split(' ') break except: pass if len(addressData) == 2: tmp_address = str(ed[address_i]).replace(' ', '') addressData = tmp_address.split(' ') if len(addressData) > 3: name = addressData[0] mobile = addressData[1] if mobile[0:1] == '\n': print('第 ' + str(ed_i + 1) + ' 行报错', addressData) os._exit(0) if '\n' in mobile: mobileData = mobile.split('\n') try: mobile = mobileData[0] mobile_find = mobile.find(':') if mobile_find > -1: #mobileData[0] = mobileData[0][0:mobile_find] name = mobile.split(':')[1] # tmp_mobile = int(mobileData[0]) except: print('第 ' + str(ed_i + 1) + ' 行手机号错误', mobileData[0]) mobile = '\t' + mobileData[0] address = ''.join(mobileData[1:] + addressData[2:]).replace(' ', '') else: mobile = str("\t" + addressData[1]) address = ''.join(addressData[2:]).replace(' ', '') has_ed = True elif len(addressData) == 1: province = ['上海市', '云南省', '内蒙古自治区', '北京市', '吉林省', '四川省', '天津市', '宁夏回族自治区', '安徽省', '山东省', '山西省', '广东省','广西壮族自治区', '广西省', '新疆维吾尔自治区', '江苏省', '江西省', '河北省', '河南省', '浙江省', '海南省', '湖北省', '湖南省', '甘肃省', '福建省', '西藏自治区', '贵州省', '辽宁省', '重庆市', '陕西省', '青海省', '黑龙江省', '上海', '云南', '内蒙古', '北京', '吉林', '四川', '天津', '宁夏', '安徽', '山东', '山西', '广东', '广西', '新疆', '江苏', '江西', '河北', '河南', '浙江', '海南', '湖北', '湖南', '甘肃', '福建', '西藏', '贵州', '辽宁', '重庆', '陕西', '青海', '黑龙江'] address = tmp_address for p in province: if p in address: addressData = address.split(p) if len(addressData) > 1: address = p + p.join(addressData[1:]) name = tmp_address.replace(address, '') nameData = name.split('1') if len(nameData) > 1: name = nameData[0] mobile = '\t1' + '1'.join(nameData[1:]) mobile = split_mobile(mobile) has_ed = True namefind = mobile.find(':') if namefind > -1: namefind = mobile.split(":") name = namefind[1] mobile = namefind[0] break else: print('没有找到名字'+str(nameData)) else: print('没有找到地址'+str(addressData)) if has_ed == True: ws.append([ed[tracking_i], name, mobile, address, ed_i]) excel_i = excel_i + 1 ed_i = ed_i + 1 if excel_i > 0: current_path = current_dir + '\\' + datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.xlsx' wb.save(current_path) wb.close() print('file export finished: ' + current_path) else: wb.close() print('no file to export') # print(os.path.abspath(os.path.dirname(__file__))) # print(os.getcwd())
2024年01月26日
import tkinter as tk from tkinter import filedialog import os import pandas as pd def process_files(): folder_path = filedialog.askdirectory() if folder_path: for file_name in os.listdir(folder_path): if file_name.endswith(".xlsx") or file_name.endswith(".xls") or file_name.endswith(".csv"): file_path = os.path.join(folder_path, file_name) if file_name.endswith(".csv"): df = pd.read_csv(file_path) else: df = pd.read_excel(file_path) selected_rows = df.iloc[[5, 6, 7, 8]] selected_columns = selected_rows[['姓名', '联系方式', '收货地址']] # 替换为你要提取的列名 new_file_name = f"new_{file_name}" new_file_path = os.path.join(folder_path, new_file_name) if file_name.endswith(".csv"): selected_columns.to_csv(new_file_path, index=False) else: selected_columns.to_excel(new_file_path, index=False) print(f"已处理 {new_file_path}") root = tk.Tk() root.title("Excel 指定行列") # 设置窗口大小和位置 window_width = 300 window_height = 150 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x = (screen_width - window_width) // 2 y = (screen_height - window_height) // 2 root.geometry(f"{window_width}x{window_height}+{x}+{y}") # 设置窗口背景颜色 root.configure(bg="#f2f2f2") # 创建标签部件 label = tk.Label(root, text="选择要处理的文件夹", font=("Arial", 14), bg="#f2f2f2") label.pack(pady=10) # 创建按钮部件 button = tk.Button(root, text="选择文件夹", font=("Arial", 12), command=process_files) button.pack(pady=10) root.mainloop()
2024年01月26日
import tkinter as tk from tkinter import filedialog import os import pandas as pd def process_files(): folder_path = filedialog.askdirectory() if folder_path: for file_name in os.listdir(folder_path): if file_name.endswith(".xlsx") or file_name.endswith(".xls") or file_name.endswith(".csv"): file_path = os.path.join(folder_path, file_name) if file_name.endswith(".csv"): df = pd.read_csv(file_path) else: df = pd.read_excel(file_path) selected_rows = df.iloc[[0, 1, 4, 7]] new_file_name = f"new_{file_name}" new_file_path = os.path.join(folder_path, new_file_name) if file_name.endswith(".csv"): selected_rows.to_csv(new_file_path, index=False) else: selected_rows.to_excel(new_file_path, index=False) print(f"已处理 {new_file_path}") root = tk.Tk() root.title("Excel 指定行") # 设置窗口大小和位置 window_width = 300 window_height = 150 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x = (screen_width - window_width) // 2 y = (screen_height - window_height) // 2 root.geometry(f"{window_width}x{window_height}+{x}+{y}") # 设置窗口背景颜色 root.configure(bg="#f2f2f2") # 创建标签部件 label = tk.Label(root, text="选择要处理的文件夹", font=("Arial", 14), bg="#f2f2f2") label.pack(pady=10) # 创建按钮部件 button = tk.Button(root, text="选择文件夹", font=("Arial", 12), command=process_files) button.pack(pady=10) root.mainloop()
2024年01月25日
@echo off set /p value=输入开启应用个数: echo 开启应用个数为%value% if %value% lss 1 ( echo 请输入大于等于1的数字 pause exit ) for /l %%i in (1,1,%value%) do ( echo 打开微信%%i start D:"\Program Files (x86)\Tencent\WeChat\WeChat.exe" ) pause
2024年01月25日
import pyautogui import time import pyperclip # 模拟按下和松开Win键,以唤起微信 pyautogui.hotkey("ctrl", "alt", "w") time.sleep(2) # 等待微信窗口出现 click_position_image = 'wechat_search_box.png' click_position = pyautogui.locateOnScreen(click_position_image, confidence=0.8) if click_position: x, y, width, height = click_position pyautogui.click(x + width / 2, y + height / 2) # 点击截图中指定位置的中心位置 time.sleep(1) # 等待一秒钟,确保焦点在输入框中 text_to_paste = "京东购物小程序" #pyautogui.typewrite(text_to_paste)#只能数字,汉字出不来,不友好,建议pyperclip库 pyperclip.copy(text_to_paste) # 将文本复制到剪贴板 pyautogui.hotkey('ctrl', 'v') # 模拟按下和释放Ctrl+V pyautogui.hotkey('down') pyautogui.press('enter') time.sleep(5) print("关键词搜索完成") #点击打开京东小程序 pyautogui.moveTo(1002, 550, 2) pyautogui.click() time.sleep(5)
2024年01月25日
# 模拟按下和松开Win键,以唤起微信 pyautogui.hotkey("ctrl", "alt", "w") time.sleep(2) # 等待微信窗口出现 # 获取微信窗口的位置和大小 wechat_window = pyautogui.getWindowsWithTitle("微信")[0] wechat_window_x, wechat_window_y, wechat_window_width, wechat_window_height = wechat_window.left, wechat_window.top, wechat_window.width, wechat_window.height # 打印微信窗口的位置和大小 print("微信窗口位置:({}, {})".format(wechat_window_x, wechat_window_y)) print("微信窗口大小:{} x {}".format(wechat_window_width, wechat_window_height)) # 等待一段时间,以便观察效果 time.sleep(5)
2024年01月25日
import pyautogui import time def search_position(): time.sleep(1) x1, y1 = pyautogui.position() print("您当前位置坐标为:", "x:" + str(x1), "y:" + str(y1)) # 获取宽度和高度 time.sleep(1) x2, y2 = pyautogui.position() width = abs(x2 - x1) height = abs(y2 - y1) print("宽度:", width) print("高度:", height) if __name__ == "__main__": print("请将鼠标移动到您想要确定宽度和高度的区域的左上角,并记录下该位置的坐标。") input("按 Enter 键继续...") while True: search_position() pass
2024年01月25日
import tkinter as tk import pyautogui import time def search_position(): x1, y1 = pyautogui.position() position_label.config(text=f"您当前位置坐标为: x:{x1} y:{y1}") # 获取宽度和高度 time.sleep(1) x2, y2 = pyautogui.position() width = abs(x2 - x1) height = abs(y2 - y1) width_label.config(text=f"宽度: {width}") height_label.config(text=f"高度: {height}") def start_search(): info_label.config(text="请将鼠标移动到您想要确定宽度和高度的区域的左上角并记录下该位置的坐标。") search_button.config(state=tk.DISABLED) root.after(1000, search_position) def reset_search(): position_label.config(text="您当前位置坐标为: ") width_label.config(text="宽度: ") height_label.config(text="高度: ") search_button.config(state=tk.NORMAL) root = tk.Tk() root.title("位置搜索") root.geometry("500x250") info_label = tk.Label(root, text="请按下开始按钮开始搜索位置") info_label.pack(pady=10) position_label = tk.Label(root, text="您当前位置坐标为: ") position_label.pack() width_label = tk.Label(root, text="宽度: ") width_label.pack() height_label = tk.Label(root, text="高度: ") height_label.pack() search_button = tk.Button(root, text="开始", command=start_search) search_button.pack(pady=10) reset_button = tk.Button(root, text="重新获取", command=reset_search) reset_button.pack(pady=5) root.mainloop()
Powered By sydomain
Copyright Your WebSite.Some Rights Reserved.