1. os.popen 命令

python 内置的 os.popen 命令可以用于执行简单的命令。

1
2
3
4
5
6
7
8
import os

# 直接运行的命令,如:打开记事本
os.popen('notepad')

# 获得运行的log或结果,如:列出文件清单
r = os.popen('tree')
print(r.read())

2. subprocess 模块

复杂一点的命令可以使用 subprocess 模块,也是 python 内置的,可以对输入/输出进行操作;

2.1 subprocess.call 命令

1
2
3
4
5
6
7
8
9
10
11
import subprocess

# 可显示运行log/结果
subprocess.call('pip list', shell=True)

# 可交互
subprocess.call('pip uninstall pip', shell=True)

# 返回值为错误代码
retcode = subprocess.call('tree', shell=True)
print(retcode)

2.2 subprocess.Popen 命令

1
2
3
4
5
6
7
8
9
10
import subprocess

# 获得运行结果,一次读取所有,要等待命令运行结束
p = subprocess.Popen('ping baidu.com', shell=True, stdout=subprocess.PIPE).stdout
print(p.read().decode('gbk'))

# 获得运行结果,一次读取一行
p = subprocess.Popen('ping baidu.com', shell=True, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, b''):
print(line.strip().decode('gbk'))

subprocess.Popen 参数比较复杂,更多用法参见:
帮助文档

20170524

20170418

草在结它的种子

风在摇它的叶子

你们坐着,不说话

就十分美好

1. 设置默认国内源

  • Windows系统

命令行修改配置

1
2
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# pip config list

或手动修改/新建文件 C:\Users\XXXX\pip\pip.ini ,内容为:

1
2
[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple/

国内源

加利福尼亚大学python扩展库(非官方)

2. 更新所有安装包

1
2
3
4
5
6
7
8
9
10
11
from pip._internal.utils.misc import get_installed_distributions
import subprocess

def pip_upgrade_all():
for dist in get_installed_distributions():
print(dist)
ustc_source = 'https://pypi.mirrors.ustc.edu.cn/simple/'
cmd = 'pip install --upgrade {} -i {}'.format(dist.project_name, ustc_source)
subprocess.call(cmd, shell=True)

pip_upgrade_all()
阅读全文 »

20170218

硬件准备

  • 树莓派3B,5V 2A充电器 + 充电线
  • TF卡(>8g,class10) + 读卡器
  • 无线路由器
  • 笔记本/电脑
  • 显示器 + HDMI线

软件准备

阅读全文 »


青青紫金 悠悠我欣

20170128

出去兜风,一不小心上新闻了。

20161204

千人徒步越野 尽赏横山秋色

2016-12-03 微江宁

今天,1500多名户外徒步爱好者齐聚秋色迷人的革命老区横山,参加由江宁广电网络公司冠名的2016首届南京横溪•横山徒步越野大会。景致优美的赛道路线,准专业越野赛事的体验,让市民充分领略到全民健身的魅力。

最小登山者:四个月大的沈悠悠小朋友。

阅读原文

嘟嘟~

20161014

hello,world!
我出生啦。

20160706

小名 糖圆
性别
出生时间 2016-07-06 17:33
出生地点 南京军区总院
出生孕周 41周(+3)
出生体重 3.6kg
出生身高 49cm

0. 安装前提

Windows系统下安装 Hexo,需要先安装下列应用程序。

1. 安装、初始化 Hexo

1
2
3
4
5
6
7
8
npm install -g cnpm --registry=https://registry.npmmirror.com

npm install -g hexo-cli

# 创建博客主文件夹为: hexo
hexo init hexo
cd hexo
npm install

创建新 post,新建的 post 文件位于source/_posts文件夹内。

1
hexo new "My New Post"
阅读全文 »

pip

  • ����Ĭ�Ϲ���Դ - Windowsϵͳ
    1
    2
    3
    pip config set global.index-url 'https://pypi.tuna.tsinghua.edu.cn/simple'

    pip config list

git

1
2
3
4
5
6
7
8
9
git config --global user.name 'shenbo'
git config --global user.email '[email protected]'

git config --global http.proxy 'http://127.0.0.1:9981'

git config -l

git config --global core.editor code
git config --global -e

scoop

  • ���� aria2 ����

    1
    2
    3
    4
    5
    scoop config aria2-enabled true                   # default: true
    scoop config aria2-retry-wait 8 # default: 2
    scoop config aria2-split 8 # default: 5
    scoop config aria2-max-connection-per-server 8 # default: 5
    scoop config aria2-min-split-size] 2M # default: 5M
  • ���� proxy

    1
    2
    3
    scoop config proxy 127.0.0.1:9981

    scoop config

npm

  • ����Ĭ�Ϲ���Դ

    1
    2
    3
    4
    5
    npm config set registry https://registry.npmmirror.com/

    # ���� nrm
    npm install nrm -g
    nrm use taobao
  • ���� proxy

    1
    2
    3
    npm config set proxy http://127.0.0.1:9981

    npm config list
阅读全文 »

田忌赛马

从前,有一只小兔子,它长了三颗牙齿,一颗金牙齿,一颗银牙齿,一颗铜牙齿。

有一天,它去地里拔萝卜。地里有三棵胡萝卜,一棵金胡萝卜,一棵银胡萝卜,一棵铜胡萝卜。

小兔子用它的金牙啃金胡萝卜,哎呀,金萝卜太硬,小兔子的金牙一下子断掉了,好疼呀,5555。

小兔子又用它的银牙啃银胡萝卜,银萝卜也很硬,小兔子的银牙也断了,5555。

最后,小兔子又用它的铜牙啃铜胡萝卜,铜胡萝卜也很硬,铜牙也断了。小兔子三颗牙都断了,它再也忍不住,哇的一声哭了起来。

正在这时,兔妈妈来了,小兔子看见妈妈来了,哭的更伤心啦。

兔妈妈安慰小兔子,孩子,你不要伤心了,牙齿断了还可以再长出来,没关系。吃胡萝卜也要动脑筋呀,不能着急。下次你可以用你的金牙去啃银胡萝卜,用你的银牙去啃铜胡萝卜,铜牙啃不动金胡萝卜就不吃了,两个胡萝卜够你吃饱了呀!

小兔子听了妈妈的话,恍然大悟。

第二天,它按兔妈妈讲的方法,果然吃了个饱。


三只斧头

有一天,小白兔在河边玩耍,突然不小心摔了一跤,小白兔的门牙磕掉了。小白兔疼的哭了起来,这时小乌龟从河里爬了出来。

小白兔,你为什么哭的这么伤心啊?

我的牙磕掉了,好疼啊,555…

那我帮你找吧。

小乌龟游到河里,过了一会,拿了一颗金牙出来了,小白兔,这颗金牙是不是你的啊?

小白兔摇摇头,不是哒。

小乌龟又游到河里,过了一会,拿了一颗银牙出来了,小白兔,这颗银牙是不是你的啊?

小白兔摇摇头,不是哒。

小乌龟又游到河里,过了一会,拿了一颗普通的牙出来了,小白兔,这颗牙是不是你的啊?

小白兔点点头,是我的,这就是我的牙~

小乌龟说,小白兔,你真是个诚实的好孩子,这三颗牙都送给你了。


守株待兔

有一天,小乌龟在河里寻找食物,突然被什么东西砸了一下。

原来是小白兔在河边玩耍,突然不小心摔了一跤,小白兔的金牙磕掉了。

小乌龟捡起金牙高兴的走了,拿金牙换了两条鱼吃。

第二天,小乌龟又到之前游泳的地方,小白兔在河边玩耍的时候不小心又摔了一跤,小白兔的银牙也磕掉了。

小乌龟捡起银牙高兴的走了,拿银牙换了一条鱼吃。

后来,小乌龟天天在河里等着小兔子摔跤,但是小兔子玩了很多天也没摔跤,小乌龟每次都空手而归。

最后小乌龟饿死了。


刻舟求剑

有一天,小兔子在河里划船,突然摔了一跤,小兔子的门牙摔断了,掉进了水里。

河里水很深,小兔子不会游泳,它打电话给小乌龟,想叫小乌龟帮忙把门牙捞出来,但是小乌龟去外婆家了。

小兔子想啊想,终于想到一个好办法。它在船上做个记号,然后把船划到岸边水浅的地方,顺着做记号的地方跳到水里,开始找门牙。

小兔子找了很久,也没找到它的门牙。


乌鸦喝水+司马光砸缸

有一天,小兔子和小乌龟在假山上玩,假山下边有一口空的水缸,突然小乌龟掉进了缸里。

幸好小乌龟有壳,摔下去没有受伤。但是水缸里面很滑,小乌龟爬不出来。水缸很深,小兔子伸手拉小乌龟也拉不到它。

怎么办呢?小乌龟急的要哭了。

有了!小兔子找了一个水瓶,从山上接满水,倒进缸里,等缸里水满了,小乌龟就可以游出来了!

小兔子接水、倒水,过了很长时间,缸里的水终于就要满了。小乌龟快要能爬出来了。

这时,小熊走了过来,它看见小乌龟掉进了缸里,急忙从路边捡了一块大石头,朝水缸砸去。

哗~

水缸碎了个大洞,水从缸里流了出来。

小乌龟终于得救了。

求解非线性方程

使用scipy库的 root, fsolve 函数求解非线性方程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from scipy.optimize import fsolve
from scipy.optimize import root


def func(x):
return x ** 4 - x - 5


x_root = root(func, 1.0)
x_fsolve = fsolve(func, 1.0)
print(x_root.x)
print(x_fsolve)

# [1.60300708]
# [1.60300708]

阅读全文 »

windows 自动获得 google hosts 并更新。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import requests

# windows系统 hosts文件地址
hosts_file_dir = 'C:/Windows/System32/drivers/etc/hosts'
# 自定义 hosts
local_hosts = '127.0.0.1 localhost\n\n\n'

# google hosts url
goog_hosts_url = 'https://coding.net/u/scaffrey/p/hosts/git/raw/master/hosts-files/hosts'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3689.0 Safari/537.36'}
req = requests.get(goog_hosts_url, headers=headers)
goog_hosts = req.content.decode(encoding='utf-8')

print('- hosts downloaded !!!\n')


with open(hosts_file_dir, 'wb') as fd:
fd.write(bytes(local_hosts + goog_hosts, 'UTF-8'))

print('- hosts update succeed !')

四阶幻方构造方法

将 1-16 填入4×4的方格里,一共有 16! = 20922789888000 种组合,计算量有点大。

可以先假设其中的 7 个数(用 a-g 表示),就可以推出其他数字:

a b c 34-a-b-c
d e f 34-d-e-f
34-2a-b-c-d+f+g g 34-e-f-g 2a+b+c+d+e-g-34
a+b+c-f-g 34-b-e-g -c+e+g -a+f+g

这样就减少到 A(16,7) = 16! / 9! = 57657600 种组合。

  • python 代码:
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
import itertools
import numpy as np


def gen_ms():
# itertools.permutations 函数 可以生成排列组合
for i in itertools.permutations(range(1, 17), 7):
(a, b, c, d, e, f, g) = i

ms = np.zeros(16, dtype=int)
ms[0] = a
ms[1] = b
ms[2] = c
ms[3] = 34 - a - b - c

ms[4] = d
ms[5] = e
ms[6] = f
ms[7] = 34 - d - e - f

ms[8] = 34 - 2 * a - b - c - d + f + g
ms[9] = g
ms[10] = 34 - e - f - g
ms[11] = 2 * a + b + c + d + e - g -34

ms[12] = a + b + c - f - g
ms[13] = 34 - b - e - g
ms[14] = -c + e + g
ms[15] = -a + f + g

# 判断
if np.max(ms) > 16 or np.min(ms) < 1 or len(np.unique(ms)) < 16:
continue

print(ms)

这是最直观的的穷举方法,性能有点弱鸡,跑完要 4-5 分钟。。。

总共有 7040 种幻方,包含对称、镜像的形式;
所以不重复的是 7040 / 8 = 880 种。


PS:三阶幻方介绍

三阶幻方又叫九宫格,最早是《河图洛书》的描述:

二四为肩,六八为足,左七右三,戴九履一

4 9 2
3 5 7
8 1 6