簡體   English   中英

如何在Windows后台持續運行Python腳本?

[英]How to constantly run Python script in the background on Windows?

我創建了一個腳本,可以將文件從一個文件夾移動到另一個文件夾。 但由於原始文件夾是 Downloads 文件夾,我需要它始終在后台運行。

我還有一個標准的批處理文件,看起來像這樣:

@py C:\\Python\Scripts\moveDLs.py %*

我正在使用Windows 10 我找到了 Linux 的信息和關於如何在批處理文件中使用nohup的操作系統。 有Windows版本嗎?

如果有,每次重啟或開機都要執行腳本嗎?

另外,當您設法使其永久化時,如何終止該過程?

非常感謝

在 Windows 上,您可以使用pythonw.exe將 python 腳本作為后台進程運行:

默認情況下,Python 腳本(擴展名為.py文件)將由python.exe執行。 此可執行文件會打開一個終端,即使程序使用 GUI,該終端也會保持打開狀態。 如果您不希望發生這種情況,請使用擴展名.pyw ,這將導致腳本默認由pythonw.exe執行(兩個可執行文件都位於 Python 安裝目錄的頂層)。 這會在啟動時抑制終端窗口。

例如,

C:\ThanosDodd\Python3.6\pythonw.exe C:\\Python\Scripts\moveDLs.py

為了讓你的腳本持續運行,你可以使用sched進行事件調度:

sched 模塊定義了一個實現通用事件調度器的類

import sched
import time

event_schedule = sched.scheduler(time.time, time.sleep)

def do_something():
    print("Hello, World!")
    event_schedule.enter(30, 1, do_something, (sc,))

event_schedule.enter(30, 1, do_something, (s,))
event_schedule.run()

現在為了殺死 Windows 上的后台進程,您只需要運行:

taskkill /pid processId /f

其中processId是您要殺死的進程的 ID。

一種選擇是更改您的腳本,使其連續運行而不是重復運行。 只需將整個事情包裝在一個 while 循環中並添加一個睡眠。

import time

while True:
   your_script_here
   time.sleep(300)

為了確保這與機器一起啟動並在發生異常時提供自動重新啟動,我建議使用 Non-Sucking Service Manager (www.nssm.cc) 將其設置為 Windows 服務。 有幾個步驟(請參閱文檔)但是一旦完成,您的腳本將只是另一個 Windows 服務,您可以從標准 services.msc 實用程序啟動和停止。

我找到了一個有效的解決方案:

import shutil, os, time

while True:
    for filename in os.listdir('folderToMoveFrom'):
        if filename.endswith((desired file extensions)):
            shutil.move( (folderToMoveFrom + filename), folderToMoveTo)
    time.sleep(6)

如果您在沒有 time.sleep() 函數的情況下執行上述代碼,則由於“找不到文件”錯誤嵌套在另一個“未找到文件”錯誤中,新文件進入文件夾后程序會崩潰。 不知道那是什么,但我對我目前所擁有的感到滿意。 您現在唯一需要做的就是將腳本添加到 Task Scheduler 以在 Pythonw 下運行,以便它作為后台進程運行。 或者,您可以運行批處理文件而不是運行腳本,只要您記得為 pythonw 添加適當的指令。 當然,您只需要啟動一次該過程。

如果你想讓代碼在后台持續運行,你需要更改文件擴展名

.py.pyw

在運行腳本之前,您需要執行以下操作:

從 CMD(命令提示符)控制台,運行命令: pip install pythonw

要啟動程序,請在 CMD(在文件所在的文件夾中)中運行以下命令: pythonw YOUR-FILE.pyw

現在該進程將在后台連續運行。 要停止該進程,您必須運行以下命令:

TASKKILL /F /IM pythonw.exe

小心。!! 所有命令都從文件所在文件夾中的命令行運行。

如果你只想運行帶有python YOUR-FILE.pyw的文件,你也可以這樣做,但你應該始終保持控制台打開。 您可以在命令提示符 (CMD) 中使用ctrl + C停止執行

來源:

我想創建一個快捷鍵,只要 PC 打開,我就可以使用它。 我不想使用while True所以我這樣做了

import keyboard as k

k.add_hotkey("alt+s", lambda: k.write('Hello'))
k.wait('ctrl+shift+1') #this is a combo that I know I don't use so the program keeps running

然后把python文件放到C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

暫無
暫無

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

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