windows隐藏python运行时的终端

From: https://my.oschina.net/sanpeterguo/blog/337263

摘要: windows上如果想执行一些常驻进程,使用python需要打开终端,容易误操作关掉。本文介绍一种在后台启动的解决方法,其实核心功能很简单,使用 start pythonw xxx.py 进行,附加一些常用的运维批处理脚本 start.bat stop.bat restart.bat status.bat

1.使用start pythonw xxx.py可在机器上执行python但隐藏终端,通常日志来查问题

2.使用ping实现sleep操作,避免使用pause导致的交互问题

app.py

import os
import time
import datetime

pid = os.getpid()

fp = file("app.pid""wt")
fp.write("%d" % pid)
fp.close()

while True:
    time.sleep(1)
    fp = file("app.log","at")
    fp.write("%s\n" % datetime.datetime.now())
    fp.close()

start.bat

@echo off
if exist app.pid (echo "[%date% %time%] Running.."
ping -n 3 localhost >nul
exit
)else ( echo "[%date% %time%] Starting.."
start pythonw app.py
ping -n 3 localhost >nul
status.bat
ping -n 3 localhost >nul
)

stop.bat

@echo off

if exist app.pid (echo "[%date% %time%] Stopping..."
  python -c "import os; os.system('taskkill /F /PID %%s' %% open('app.pid').read());"
  del app.pid
)else (echo "[%date% %time%] Stopped.."
ping -n 3 localhost >nul
)

status.bat

@echo off
if exist app.pid (echo "[%date% %time%] Runningg...")else (echo "[%date% %time%] Stopped..")
ping -n 3 localhost >nul

restart.bat

@echo off
if exist app.pid (echo "[%date% %time%] Stopping..."
  python -c "import os; os.system('taskkill /F /PID %%s' %% open('app.pid').read());"
  del app.pid
)else (echo "[%date% %time%] Stopped.."
ping -n 3 localhost >nul
)

if exist app.pid (echo "[%date% %time%] Running.."
ping -n 3 localhost >nul
exit
)else ( echo "[%date% %time%] Starting.."
start pythonw app.py
ping -n 3 localhost >nul
status.bat
ping -n 3 localhost >nul
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值