簡體   English   中英

如何在 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))

我想用第一個文件更改第二個文件,但我希望在我的電腦打開並獲取當前日期時打開第一個文件。 當日期更正並更改第二個文件時。

按 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 寫在下面

您正面臨此錯誤,因為您正在從不包含該文件的目錄運行腳本命令,並且它試圖在其運行目錄中找到該文件但找不到它。 如果從您計算機上的任何目錄運行,設置它的完整路徑將使腳本工作。

我已經為 .bat 文件嘗試過這種方式,並且它有效,您也可以嘗試。 將要在 windows 啟動時運行的 python 文件放在此位置。 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

我寫了一個腳本,可以在 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()

如果您使用的是 python 2.7.x,則將winreg替換為_winreg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM