我已经创建了一个脚本,可以将文件从一个文件夹移动到另一个文件夹。 但由于原始文件夹是“下载”文件夹,我需要它始终在后台运行。
我还有一个标准的批处理文件,看起来像这样:
@py C:\\Python\Scripts\moveDLs.py %*
我正在使用Windows 10。我已经找到了有关Linux和OS如何在批处理文件中使用nohup
的信息。
那么Windows版本呢?
如果有,您需要每次重新启动或打开电脑时执行脚本吗?
另外,当您成功使其永久时,如何终止该进程?
非常感谢。
我已经创建了一个脚本,可以将文件从一个文件夹移动到另一个文件夹。 但由于原始文件夹是“下载”文件夹,我需要它始终在后台运行。
我还有一个标准的批处理文件,看起来像这样:
@py C:\\Python\Scripts\moveDLs.py %*
我正在使用Windows 10。我已经找到了有关Linux和OS如何在批处理文件中使用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上结束后台进程,您只需要运行以下命令:
现在要在Windows上结束后台进程,您只需要运行:
taskkill /pid processId /f
其中processId
是您想要终止的进程的ID。
tasklist
命令来查找进程 ID。你应该将服务名称与 PID 相关联。 - Giorgos Myrianthous一种选择是改变您的脚本,使其连续运行而不是重复运行。只需将整个脚本放在while循环中,并添加一个sleep。
import time
while True:
your_script_here
time.sleep(300)
为了确保在计算机启动时自动运行并在异常情况下提供自动重启,建议使用 Non-Sucking Service Manager (www.nssm.cc) 将其制作成 Windows 服务。这需要执行几个步骤(请参阅文档),但一旦完成,您的脚本将成为另一个可以在标准services.msc实用程序中启动和停止的Windows服务。
如果您想让代码在后台持续运行,您需要更改文件扩展名
从.py变为.pyw
在运行脚本之前,您需要执行以下操作:
从CMD(命令提示符)控制台中运行命令:pip install pythonw
要启动程序,请在CMD中(文件所在的文件夹中)运行以下命令:pythonw YOUR-FILE.pyw
现在进程将在后台持续运行。要停止进程,必须运行以下命令:
TASKKILL /F /IM pythonw.exe
注意!!!所有命令都是在文件所在的文件夹中从命令行运行的。
如果您想使用python YOUR-FILE.pyw简单地运行文件,也可以这样做,但您应该始终保持控制台打开。您可以通过从命令提示符(CMD)中按ctrl + C来停止执行。
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)
我想创建一个快捷键,无论何时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
中。