繁体   English   中英

Python Pandas 和 Slack Webhooks Requests.post

[英]Python Pandas and Slack Webhooks Requests.post

我希望实现的是从我们使用的工单应用程序中提取 csv 文件。 然后使用 pandas 转换它并删除不必要的列。 然后使用 webhook 将此信息发布到 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 列删除后

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

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

python-pandas-dataframes-to-slack 发布的一些方法

漂亮的打印熊猫数据框

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM