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

问题描述

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))

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

解决方法

通过按 Win + R 并输入 shell:startup 来打开您的启动文件夹

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

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

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

编辑:至于您面临的错误。 改变

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

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

在打开 dosya.txt 的任何地方都这样做,就像在下面写的 dosya.txt 一样

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

,

我已经为 .bat 文件尝试过这种方式,它有效,您也可以尝试。将要在 Windows 启动时运行的 Python 文件放在此位置。 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

,

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

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}',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',winreg.KEY_SET_VALUE)
                winreg.SetValueEx(key,f'{self.program_basename}',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()

如果您使用的是 python 2.7.x,则将 winreg 替换为 _winreg