windows 打开时如何制作自动 运行 python 文件

How to make auto-run python file when windows open

from datetime import date

bugun = str(date.today())

if bugun == "2021-04-25":
    with open("dosya.py","r+") as dosya:
        liste = dosya.readlines()
        liste.insert(3,"DenemeBu\n")
        del liste[4]
        dosya.seek(0)
        print(liste)
        with open("dosya.py","w") as dosya:
            for i in liste:
                dosya.write(i)
import os
print("Hello")
sayi1 = int(input("Sayi1: "))
sayi2 = int(input("Sayi2: "))
print("Sonuc {}".format(sayi1+sayi2))

我想用第一个文件更改第二个文件,但我希望第一个文件在我的电脑打开并采用当前日期时打开。当日期更正并更改第二个文件时。

这个方法我试过.bat文件,效果不错,你也可以试试。将您想要在 windows 启动时 运行 的 python 文件放在此位置。 C:\ProgramData\Microsoft\Windows\StartMenu\Programs\StartUp

按 Win + R 并输入 shell:startup

打开您的启动文件夹

在此文件夹中,创建一个 txt 文件并将其重命名为 anything.bat 并使用

进行编辑
@ECHO OFF
python3 C:/path/to/my/script.py

如果您希望它有一个终端 window 弹出窗口,您可以删除“@ECHO OFF”。

编辑:至于你面临的错误。 变化

open("dosya.txt", "r")

open("C:/full/path/to/dosya.txt", "r")

在你打开 dosya.txt 的任何地方都这样做,比如在 dosya.txt 写在下面

您遇到此错误是因为您 运行 从不包含该文件的目录中为脚本执行命令,并且它试图在 运行 中找到该文件ning 目录,找不到它。如果 运行 从您计算机上的任何目录设置完整路径将使脚本工作。

我写了一个脚本,可以在 PC 启动时自动运行任何脚本

import os
import winreg


class is_at_startup:
    '''Adding the given program path to startup'''

    def __init__(self, program_path):
        self.program_path = program_path
        self.program_basename = os.path.basename(self.program_path)

    def main(self):
        '''Adding to startup'''

        if os.path.exists(self.program_path):
            areg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)

            try:
                akey = winreg.OpenKey(areg, f'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\{self.program_basename}', 0, winreg.KEY_WRITE)
                areg.Close()
                akey.Close()

                print(f'{self.program_path} already at startup')

            except WindowsError:
                key = winreg.OpenKey(areg, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, winreg.KEY_SET_VALUE)
                winreg.SetValueEx(key, f'{self.program_basename}', 0, winreg.REG_SZ, f'{self.program_basename}')

                areg.Close()
                key.Close()

                print(f'{self.program_path} added to startup')


if __name__ == '__main__':
    startup = is_at_startup('your program path')
    startup.main()

If you are using python 2.7.x then replace winreg with _winreg