Python Pandas 和 Slack Webhooks Requests.post

Python Pandas and Slack Webhooks Requests.post

我想要实现的是从我们使用的工作订单应用程序中提取一个 csv 文件。然后使用 pandas 转换它并删除不需要的列。然后 post 使用 webhook 将此信息放入 slack 中。 我无法访问 slack API。 到目前为止,这是我想出的,但我发现很难将数据转换成我可以发送的格式。

from time import sleep
from requests.models import Response
from selenium import webdriver
import os
import pandas as pd

import json
import requests


def WOPULLER_CSV():
  options = webdriver.ChromeOptions() 
  prefs = {'download.default_directory' : 'C:\WO_CSV'}
  options.add_experimental_option('prefs', prefs)
  driver = webdriver.Chrome(options=options)
  driver.get('https://portal.ez.na.rme.logistics.a2z.com/work-orders?preset=allCSS&customPreset=allCSS&scheduledStartDate=nextOneWeek&status=RS,S')
  SignInASButton = driver.execute_script("return document.querySelector('ez-rme-app').shadowRoot.querySelector('ez-login-page').shadowRoot.querySelector('ez-login').shadowRoot.querySelector('mwc-button:nth-child(4)').shadowRoot.querySelector('#button')")
  SignInASButton.click()
  sleep(1)
  SingleSignOnButton = driver.execute_script("return document.querySelector('ez-rme-app').shadowRoot.querySelector('ez-login-page').shadowRoot.querySelector('ez-login').shadowRoot.querySelector('#sso-login').shadowRoot.querySelector('#button')")
  SingleSignOnButton.click()
  sleep(8)
  if os.path.exists("C:\WO_CSV\WorkOrderExport.csv"):
    os.remove("C:\WO_CSV\WorkOrderExport.csv")
  CSVButton = driver.execute_script("return document.querySelector('body > ez-rme-app').shadowRoot.querySelector('#content > main > ez-work-order-list-page').shadowRoot.querySelector('div > mwc-button:nth-child(1)').shadowRoot.querySelector('#button')")
  CSVButton.click()
  sleep(1)

def WEBHOOK():

  #value = pd.read_json('C:\WO_CSV\WorkOrderExport.json')

  value = wo
  web_hook_link = 'WEBHOOK LINK'
  headers = {
    'Content-Type': 'application/json',
          }
  data = json.dumps({"name": value})
  response = requests.post(web_hook_link, headers=headers, data=data)
  print (response)

#WOPULLER_CSV() 

df = pd.read_csv (r'C:\WO_CSV\WorkOrderExport.csv')
df = df.sort_values(by='Scheduled Start Date', ascending=False)
df = df.drop(columns=['Organization', 'Original PM due date', 'PM Compliance Max Date', 'PM Compliance Min Date', 'Scheduled End Date', 'Priority', 'Equipment Criticality', 'Equipment Alias', 'Type', 'Index', 'Equipment Description' ])

if os.path.exists("C:\WO_CSV\WorkOrderExport.json"):
    os.remove("C:\WO_CSV\WorkOrderExport.json")

df.to_json('C:\WO_CSV\WorkOrderExport.json')
wo = pd.read_json (r'C:\WO_CSV\WorkOrderExport.json')

WEBHOOK()
print (wo)

CSV 文件中的信息: CSV After Colum Drop

我试图在 slack 中实现的目标类似于我只是从 excel xlsx 文件复制和粘贴。 slack 中没有 MD 格式,所以这是最好的选择。 Format in slack

好的,我找到了答案。为了 post 松弛,您需要将 csv 文件制成表格,然后使用 json.dump。引用了这些其他堆栈 posts :

what-are-some-ways-to-post-python-pandas-dataframes-to-slack

pretty-printing-a-pandas-dataframe

def WEBHOOK():
    
      #value = pd.read_json('C:\WO_CSV\WorkOrderExport.json')
    
      value = tab
      web_hook_link = 'https://hooks.slack.com/workflows/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'
      headers = {
        'Content-Type': 'application/json',
              }
      data = json.dumps({"name": value})
      response = requests.post(web_hook_link, headers=headers, data=data)
      print (response)
    
    #WOPULLER_CSV() 
    
    df = pd.read_csv (r'C:\WO_CSV\WorkOrderExport.csv')
    df = df.sort_values(by='Scheduled Start Date', ascending=False)
    df = df.drop(columns=['Organization', 'Original PM due date', 'PM Compliance Max Date', 'PM Compliance Min Date', 'Scheduled End Date', 'Priority', 'Equipment Criticality', 'Equipment Alias', 'Type', 'Index', 'Equipment Description' ])
    
    **tab = (tabulate(df, tablefmt="grid"))**
    
    WEBHOOK()
    print (tab)