社区首页 >问答首页 >如何在不同的.py文件中运行一个.py文件10次,每次都将从第一个.py文件中获得的变量作为不一致的消息发布

如何在不同的.py文件中运行一个.py文件10次,每次都将从第一个.py文件中获得的变量作为不一致的消息发布
EN

Stack Overflow用户
提问于 2021-01-01 16:40:51
回答 1查看 35关注 0票数 0
代码语言:javascript
代码运行次数:0
复制
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import base64
import time
# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/gmail.modify']


def main():
    """Shows basic usage of the Gmail API.
    Lists the user's Gmail labels.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('gmail', 'v1', credentials=creds)

    # Call the Gmail API
    repeat = 0
    while repeat <= 10:
        labelName = "READ-BY-SCRIPT"
        LABEL_ID = 'Label_8507504117657095973'
        results = service.users().messages().list(
            userId='me', q="-label:"+labelName, maxResults=1).execute()
        messages = results.get('messages', [])
        body = []
        if not messages:
            repeat += 10
            time.sleep(60)
        else:
            for message in messages:
                msg = service.users().messages().get(
                    userId='me', id=message['id']).execute()
                labels = msg['labelIds']
                if "INBOX" in labels:
                    body.append(msg['payload']['parts'])
                    body = base64.urlsafe_b64decode(
                        body[0][0]['body']['data'])
                    body = str(body)
                    if 'b"\\r\\nHi MOHAMMAD,\\r\\n' or "b'\\r\\nHi MOHAMMAD,\\r\\n" in body:
                        if 'posted a new assignment in IX K  \\r\\n<https://classroom.google.com/c/MTEyNDMxODgyMTE0>.' in body:
                            body = body.replace(
                                "\\r\\nIf you don\\'t want to receive emails from Classroom, you can unsubscribe  \\r\\n<https://classroom.google.com/s>.\\r\\n\\r\\nGoogle LLC\\r\\n1600 Amphitheatre Pkwy\\r\\nMountain View, CA 94043 USA\\r\\n'", "")
                            body = body.replace("b\"", "").replace("b'", "").replace('"', '').replace("   ", ' ').replace(
                                "  ", ' ').replace(" \\n<https://classroom.google.com/c/MTEyNDMxODgyMTE0>", "").replace("\\n", "\\n\\n")
                            body = body.replace("\\r\\n\\nHi MOHAMMAD,\\r\\n\\n", "").replace(" \\r\\n\\n<https://classroom.google.com/c/MTEyNDMxODgyMTE0>.\\r\\n", "").replace(
                                "\\r\\n\\nIf you don't want to receive emails from Classroom, you can unsubscribe \\r\\n\\n<https://classroom.google.com/s>.\\r\\n\\n\\r\\n\\nGoogle LLC\\r\\n\\n1600 Amphitheatre Pkwy\\r\\n\\nMountain View, CA 94043 USA\\r\\n\\n", "")
                            body = body.replace("\\r", "\r").replace(
                                "\\n", "\n").replace("\n\n", "\n").replace("\\\\", "\\")
                            body = body.replace("\\xe2", "").replace(
                                "\\x80", "").replace("\\x99", "").replace("\\x98", "")
                            body = body.replace(
                                "\\r\\nIf you don\\'t want to receive emails from Classroom, you can unsubscribe  \\r\\n<https://classroom.google.com/s>.\\r\\n\\r\\nGoogle LLC\\r\\n1600 Amphitheatre Pkwy\\r\\nMountain View, CA 94043 USA\\r\\n'", "")
                            body = body.replace("\\'", "")
                            body = body.replace(
                                "\\r\\nIf you don\\'t want to receive emails from Classroom, you can unsubscribe", "")
                            body = body.replace(
                                "If you dont want to receive emails from Classroom, you can unsubscribe\n <https://classroom.google.com/s>.\nGoogle LLC\n1600 Amphitheatre Pkwy\nMountain View, CA 94043 USA\n", "")

                            TEACHER_NAME = body.split("posted", 1)[0]
                            body = body.replace(TEACHER_NAME, "")
                            LINK = str(body.split("\r\nOPEN \r\n<", 1)[1])
                            LINK = LINK[:-1]
                            body = body.replace(LINK, "").replace("<", "").replace(">", "").replace(
                                'posted a new assignment in IX K\n\r\n', "").replace("\r\nOPEN \r\n", "")
                            if 'Due: ' in body:
                                body = body.replace("\n", "          ", 1)
                                DATE = body.split('          ')[0]
                                body = body.split('          ')[1]
                            else:
                                body = body
                                DATE = 'No Due Date Provided'
                                
                            service.users().messages().modify(userId='me', id=message['id'], body={
                                'addLabelIds': ['Label_8507504117657095973']}).execute()
                            repeat += 1
                        else:
                            service.users().messages().modify(userId='me', id=message['id'], body={
                                'addLabelIds': [LABEL_ID]}).execute()
                            pass
                    else:
                        service.users().messages().modify(userId='me', id=message['id'], body={
                            'addLabelIds': [LABEL_ID]}).execute()
                        pass
                else:
                    service.users().messages().modify(userId='me', id=message['id'], body={
                        'addLabelIds': ['Label_8507504117657095973']}).execute()
                    pass


if __name__ == '__main__':
    main()

此脚本从gmail获取最新的未读电子邮件。如果没有新的电子邮件,它会立即结束脚本。如果有一封不是来自谷歌课堂的电子邮件,它会将该邮件标记为已读,然后再次重复该过程,直到没有新的未读电子邮件,或者如果找到来自谷歌课堂的电子邮件。如果有来自谷歌课堂的新电子邮件,它将获取教师的姓名TEACHER_NAME、作业链接的链接、截止日期和作业主体的详细信息,然后结束脚本

我想创建一个不同的python文件(bot.py),它运行包含上述脚本的另一个python文件(gmail.py) 10次。每次运行gmail.py时,如果这些变量是由gmail.py定义的,则bot.py通过discord.py在不同的消息中发送每个变量,如果这些变量不是由gmail.py定义的,则不执行任何操作。然后,bot.py等待1分钟,然后再次重复整个过程。如何做到这一点?我应该从哪里开始呢?

EN

回答 1

Stack Overflow用户

发布于 2021-01-01 19:34:13

您并不是真的“运行”python文件,而是应该导入文件(或文件中的函数),并使用for循环多次运行函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65531591

复制
相关文章
找到java代码中没有被使用的公用方法
最近,我打算对我们项目的代码进行清理,准备把一些没有被使用到的公用方法清理掉,但是我在网络找了一遍,像PMD,Findbugs等静态工具,都只能找到没有被使用的私有方法。
源哥
2018/08/28
1.6K0
为什么我的HibernateDaoSupport没有注入SessionFactory
1.按理来说Spring应该会通过setSessionFactory方法将SessionFactory注入进来,可是并没有。
用户2032165
2019/04/09
3.1K0
为什么我的HibernateDaoSupport没有注入SessionFactory
MONGODB Sharding 安装 与网上我没有找到的 Answer
本来今天应该是MYSQL的文字,不过最近搞的MONGO比较多,测试MGR 的集群出了问题正在解决,所以今天和明天都是MONGODB 的文字
AustinDatabases
2019/08/30
5390
MONGODB Sharding 安装 与网上我没有找到的 Answer
为什么我的进程被kill掉了
这段代码非常简单,就是先用mmap的方式,为该进程分配10GiB的虚拟内存,然后再用page写的方式,让操作系统为这10GiB虚拟内存,分配对应的物理内存,最后sleep,等待我们测试。
KINGYT
2021/08/09
2.4K0
为什么我的进程被kill掉了
Archiva 仓库提示文件没有找到
如果提示的是 404 的话,提示你的 Archiva 在可能的源仓库中已经进行了搜索,但是没有找到。
HoneyMoose
2020/04/13
6550
Archiva 仓库提示文件没有找到
为什么我的进程被kill掉了
这段代码非常简单,就是先用mmap的方式,为该进程分配10GiB的虚拟内存,然后再用page写的方式,让操作系统为这10GiB虚拟内存,分配对应的物理内存,最后sleep,等待我们测试。
Linux阅码场
2021/04/22
2.7K0
为什么我的进程被kill掉了
为什么OpenFlow没有被广泛采用?
可操作性与可扩展性问题 OpenFlow的终端用户以及市场人员明确指出其技术问题:操作复杂,很难测试以及扩展。 这不是OpenFlow的核心技术问题,但确是其生态系统中很重要的一部分,像与芯片厂商以
SDNLAB
2018/03/30
1.3K0
为什么OpenFlow没有被广泛采用?
springMVC配置文件失败webapp没有蓝点问题解决
 打开Project Structure,找到我们创建的Module,在该模块目录下右键新建Web框架(已经存在的话删除重新建)。
一个风轻云淡
2022/11/13
5090
springMVC配置文件失败webapp没有蓝点问题解决
[linux][kprobe]谁动了我的文件---使用kprobe找到目标进程
问题场景: 云计算IaaS平台上,经常使用libvirt+qemu-kvm做基础平台。libvirt会在/etc/libvirt/qemu/目录下,保存很多份qemu的配置文件,如ubuntu.xml。 作者发现其中的配置文件会在特定的场景下被修改,却不知道哪个进程是凶手。为了找到凶手,作者写下了这个debug工具。 代码分析: 代码路径:https://github.com/pacepi/whotouchmyfile #include <linux/kernel.h> #include <linux/mo
皮振伟
2018/04/09
2.3K0
idea创建web项目没有webapp_为什么idea创建不了web项目
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188538.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
1.2K0
idea创建web项目没有webapp_为什么idea创建不了web项目
因为没有网关,我的服务器被 DDoS 了
大家好,我是鸭血粉丝,想起来之前生产发生的事故,阿粉我的内心到现在都还很忐忑不安,今天我们来学习一个 Kong 以及跟你们聊聊做好网关限流控制的重要性。
纯洁的微笑
2020/03/18
1.5K0
因为没有网关,我的服务器被 DDoS 了
作为现代开发的基础,为什么 TDD 没有被广泛采用?
作者 | Buttondown 译者 | Sambodhi 策划 | Tina 测试驱动开发 在 1999 年左右是最前沿的技术,也是现代开发的基础,但为什么直到现在还没有被广泛使用?   “我认为,在我作为一名专业极客的四十二年生涯中,软件行业在历史上始终不能或不愿意掌握和采用测试驱动开发(TDD),这是最令人沮丧和丧气的事件之一。”对于 TDD 没有广泛被应用的问题,GeePaw Hill 发了系列 推文 进行了探讨。他认为问题在于其支持者在组织方面的失败,他们推动得太猛,想将“TDD”转化
深度学习与Python
2023/03/29
5280
作为现代开发的基础,为什么 TDD 没有被广泛采用?
SpringBoot无法访问webapp目录下的文件
  在pom中添加此段 完美解决,代码的作用是让src/main/webapp在编译的时候在resoureces路径下也生成webapp的文件
Arebirth
2020/06/19
2.4K0
为什么没有运营的SaaS没有未来?
来源:大虫运营心经  作者 : 花大虫 ---- 职业生涯前几年一直在做C端互联网相关的工作,这两年突然转做B端了,感受有很大的差异,但是却又有很大的相似性,To C的运营经验对To B的运营有巨大的帮助。越做越觉得To B行业有意思,大有可为。 最近我会把近2年亲身经历的一些To B行业运营经验分享给大家。 万信是我现在创业在做的一家餐饮SaaS公司,后面文章中会有涉及。 ✎✎✎ 大家谈To B都会讲产品、讲销售,很少人会讲到运营。殊不知一个To B产品的运营非常关键,因为这直接决定了一个非常重要
腾讯SaaS加速器
2020/06/09
9520
#PY小贴士# 抓下来的网页为什么没有我要的内容?
现在绝大多数网站的内容并非直接通过你访问的 URL 请求直接返回,而是会通过一种叫做 AJAX 的方法,在页面的基本框架加载完毕后,再通过其他的请求向后台服务器再次请求获取的。这被称作“异步加载”,好处是将动态数据和静态的显示框架相分离,既提高了加载速度、提升用户体验,又方便多平台的接口复用。具体细节我不展开了,你可以网上去按我给到的关键字去搜索相关内容,下次我也会专门发下这方面的讲解文章。
Crossin先生
2019/12/19
2.1K0
#PY小贴士# 抓下来的网页为什么没有我要的内容?
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
搜云库技术团队
2023/10/21
1930
为什么 MyBatis 源码中,没有我那种 if···else
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
一行Java
2023/09/19
2200
为什么 MyBatis 源码中,没有我那种 if···else
我是怎么找到通用漏洞的
2.然后随便点进去一个模块,发现网站页面域名发生了跳转,直觉告诉我,这波操作一定存在问题。果然,在页面的最底端,发现了某家公司的名字,这应该就是开发商。
Ms08067安全实验室
2020/02/19
1.1K0
我是怎么找到通用漏洞的
CPS推广:为什么我的佣金还没有到账呢
CPS推广奖励的佣金,目前无法直接后台提现,需要在次月月结之后,由财务系统统一打款到银行,即推广者后台所填写的银行账号,一般上月佣金,次月月末到账,具体时间以银行到账为准。
腾讯云-推广奖励
2019/11/28
10.7K0
CPS推广:为什么我的佣金还没有到账呢
点击加载更多

相似问题

html2canvas和jsPDF,css样式呈现错误的pdf格式

13

带有TypeScript的样式化组件的'css‘属性

115

带有CSS边框样式的Chrome呈现问题

10

Angular2如何在typescript中更改css类的样式?

218

使用innerHtml使用angular2呈现CSS

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文