Python: 同步Redis指定Key的数据

python Logo
image-3247

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import redis

'''
同步Redis数据.

依赖:


pip install redis

'''


__author__ = "puruidong"

'''

'''


source_redis_client = redis.Redis(host='192.168.1.10', port=6379, db=0, password="pass1234567")

to_redis_client = redis.Redis(host='192.168.1.12', port=6379, db=0, password="pass1234567")

redis_import_arr = ["8001", "8002","8003","8004"]


def main():
    read_redis_key()


def read_redis_key():
    for item in redis_import_arr:
        redis_key = f"gps-service:{item}"
        redis_value = source_redis_client.get(redis_key)
        print(redis_value)
        to_redis_client.set(redis_key, redis_value)


if __name__ == '__main__':
    main()

Python:发送邮件

发送邮件

之前用Java写过一个发送邮件的,这回来一个Python版本的,参照了廖雪峰(地址)的教程,只是优化了几个地方。

python Logo

源码

示例中是QQ邮箱,QQ邮箱的SMTP密码是授权码(位置在:设置->账户->SMTP…设置),需要先申请才能用,而且QQ邮箱强制使用SSL,请注意。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib


# 自己的邮箱地址
from_addr=""
# 邮箱密码(有的邮箱可能是使用的授权码)
password=""
# 发送给谁
to_addr=""
# 邮箱的smtp服务器地址
smtp_server="smtp.qq.com"


def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr('管理员 <%s>' % to_addr)
msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()

server = smtplib.SMTP(smtp_server, 587)
# 因为QQ邮箱使用的是SSL,所以必须使用下面这行代码.
server.starttls()
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()

Python:替换word中的文本

需要批量替换word中的文本

如题,于是找到了win32com来操作word.

python Logo

源码

源码如下,部分源码来自网络.

import win32com
from win32com.client import Dispatch
import os


'''

必要:
1.python 3.6 
2.win32com(这个版本与py的版本一致,不是与系统的.必须注意)



1.执行前需打开wps或者word软件(可以不用打开任何文档);
2.本程序执行完之后,wps或者word软件上会显示已经被修改的文档;
3.保存所有文档即可完成替换.

'''

if __name__ == '__main__':
	with os.scandir(".") as it:
		for entry in it:
			if not entry.name.startswith('.') and not entry.name.startswith('~') and entry.name.endswith('.doc') and entry.is_file():
				filename = os.path.splitext(entry.name)[0]
                                # 会将原文本替换为去掉后缀的文件名.
				word = Dispatch('Word.Application')
				doc = word.Documents.Open(entry.name)
				word.Selection.Find.Execute("原文本", False, False, False, False, False, True, 1, True,filename, 2)
	print("执行完成")

Python:sublime-text3中提示[DECODE ERROR – OUTPUT NOT UTF-8]

遇到这个问题…

在写了一段py脚本,然后ctrl+b执行的时候提示:decode error – output not utf-8.
偶然,遇到这个问题,捣鼓了一晚上.各种改,后来想起一个解决方案,写在这做个备注.

python Logo

解决

依次打开:工具->编译系统->新编译系统,把下面的数据贴到里面,然后ctrl+s,保存,名字可以取成python3或者python3build,都可以,不用输入后缀.

把这个地址[D:/Program Files/Python36-32/python.exe]换成你自己的Python.exe的绝对路径.

{ 
"cmd": ["D:/Program Files/Python36-32/python.exe", "-u", "$file"], 
"file_regex": "^[ ]File \"(…?)\", line ([0-9]*)", 
"selector": "source.python",
"encoding":"cp936" 
}

然后保存,在打开工具->编译系统->选择刚才新增的,ctrl+b编译运行就可以了.

附赠一个简单的py脚本:

if __name__ == '__main__':
	print("123.456.测试")

Golang编译系统的配置如下:

D:\\Go\\bin\\go要换成自己的,Golang只能编译在系统环境变量中配置的GOPATH指定的路径中的.go文件!

{
"shell_cmd": "D:\\Go\\bin\\go run $file",
"encoding": "utf-8"
}