Python与我的不解之缘

本文属于装糊涂的猪原创,转载请注明出处作者
文中的两个Demo地址位于:https://github.com/ftc300/PythonAmazing.git
欢迎follow and start哦
我是一个android开发者,但是不得不说python也给我带来了乐趣与便利

上周末雨后玄武湖火烧云美景,有幸亲临,拍摄技术有限,将就看看吧.jpg

这篇文章你将看到:

  • python的版本管理(virtualenv)
  • 一个有意思的小程序激发你的python热情
  • 封装代码提交流程

对于初学者,Python的安装也许并不容易,尤其面临选择python版本的困境,浪费了很多宝贵的时间,甚至有让人放弃的感觉。当你拿到某个有趣的项目,一运行就报错,还在抱怨这个开发者是怎么回事时,很可能其实是运行的环境不对,所以在学习python时,我首先对python环境进行了了解学习。也曾纠结学习python2还是pyhton3时,但是当你用了virtualenv后,还是不要思考这个问题了,两个都学吧...
官方也给出了解释:
Python2orPython3
个人觉得对语言环境重要性的认识可能会为你省去很多烦恼,所以本文就先从能隔离出多个运行环境的virtualenv说起吧 ...

撩你不解释.gif

一、virtualenv

下面给出windows和mac 的virtualenv 的使用教程,也是给自己做个备忘录。
使用流程大概就包括

  • 1、安装virtualenv
  • 2、创建一个隔离环境
  • 3、激活并切换到virtualenv环境
  • 4、退出virtualenv环境

Windows:

1、安装(略)
2、virtualenv venv
当安装多个版本需要指定Python版本路径时:
virtualenv venv --python=C:\Python2.7\python.exe
3、venv \Scripts\activate
4、venv\Scripts\deactivate

参考链接:python的virtualenv环境与使用

Mac:

参考链接:Python--Virtualenv简明教程

二、小程序提升兴趣

运行环境的是python 2.7
两个模块:
PIL :图像处理标准库,通过pip install Pillow安装吧
argparse:是python的命令行解析工具,或者说可以在python代码中调用shell的一些命令,从而简化和系统命令之间的交互

下面是实现图片转成字符的代码

#! /usr/bin/env python
# coding: utf-8

from PIL import Image
import argparse
# 命令行参数工具
# 此处不是重点,故而不做讲解,具体参见 (https://docs.python.org/2/library/argparse.html)

parser = argparse.ArgumentParser()
parser.add_argument('file')

args = parser.parse_args()
imgpath = args.file
# 变量ascii_char: 存储用于显示图片的字符种类。我们要注意到,这个list的最后一个元素是空格,这表示,我们
# 将使用空格来代替原图片中灰度值最高的像素点(在灰度图像中,灰度值最高为255,代表白色,最低为0,代表黑色)。
# list中的第一个元素是$,这表示我们将使用$来代替原图片中灰度值最低的像素点。其余字符依此类推。
ascii_char = list(r"$@&%B#=-. ")


# 把RGB转为灰度值,并且返回该灰度值对应的字符标记
def select_ascii_char(r, g, b):
    gray = int((19595 * r + 38469 * g + 7472 * b) >> 16)  # ‘RGB-灰度值’转换公式
    unit = 256.0/len(ascii_char)  # ascii_char中的一个字符所能表示的灰度值区间
    return ascii_char[int(gray/unit)]


# 返回给定路径图片的字符表示,用户在此还可以指定输出字符画的宽度和高度
def output(imgpath, width=100, height=100):
    im = Image.open(imgpath)
    im = im.resize((width, height), Image.NEAREST)
    txt = ""

    for h in xrange(height):
        for w in xrange(width):
            txt += select_ascii_char(*im.getpixel((w, h))[:3])  # 此处请看详解(1)
        txt += '\n'
    return txt


def save_as_txtfile(txt):
    with open('imgtochar.txt', 'wb') as f:
        f.write(txt)


if __name__ == '__main__':
    print output(imgpath, 120, 90)
    save_as_txtfile(output(imgpath, 120, 90))

效果:


hello.png
hello.png

三、封装git代码提交流程

我们在日常的开发过程中,肯定会经常要用到一些代码版本控制工具,其中较为常用的如GitHub,当然GitHub的命令已经比较精简了,不过依照我们每个人的个人习惯不同还是可以进行一些简单的封装的。在日常开发中,不出意外每天写完代码,测试完功能就能提交代码了 ,所以一般我就采用了如下囫囵吞枣式的提交方式了。


让你偷懒,哈哈.gif
import subprocess
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('cmtmsg')
args = parser.parse_args()
msg = args.cmtmsg
print subprocess.Popen("cd .", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("git pull", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("git add .", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("git commit -m \""+msg +"\"", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("git push", shell=True, stdout=subprocess.PIPE).stdout.read()

对个别文件的操作这个就帮不上忙了,而且如果你一天的活或者完整功能都没有结束,亦不适用哦。具体的一些git操作命令我是学习廖雪峰老师的教程的,因为我觉得写得很好,一时激动捐了20元,也是蛮佩服自己的。言归正传subprocess模块给我带来了无限的便利,上面的例子只是提供一个思路,你同样可以封装一些系统命令来简化你的工作,再如adb命令:

import subprocess

print subprocess.Popen("echo uninstall start***", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("adb uninstall com.xiaomi.smarthome", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("echo uninstall end***", shell=True, stdout=subprocess.PIPE).stdout.read()
print subprocess.Popen("echo install start***", shell=True, stdout=subprocess.PIPE).stdout.read()
p = subprocess.Popen("adb install %cd%/SmartHome.apk", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
    print line,
retval = p.wait()

如上实现的是卸载米家app并重新安装的系列流程,但是如果git,adb命令都没有加入系统环境变量中,以上代码肯定是无效的,那么还在等什么是不是你也可以封装一个将jdk、git、adb、gradle、gitk、python命令等统统加入环境变量的脚本,也方便你从现在公司删数据库跑路到新公司报道(开个玩笑),一键完成环境变量的设置的酷毙行为啊 ,当然你最好还是按照你现在安装路径来安装相关软件。

文章到这里就要戛然而止了,在Python的道路上,我比较感谢以前的一个同事文杰,大家也可以去逛逛他的github地址。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容

  • 译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言...
    EarlGrey阅读 69,635评论 7 124
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,140评论 25 707
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,425评论 6 428
  • 文件处理命令 目录处理命令 权限管理命令 文件搜索命令 帮助命令 用户管理命令 压缩解压命令 tar解压缩命令 语...
    tf_dejs阅读 201评论 0 0
  • 左是左边的左 文/张蜜诗 【左君】 丹宁小姐这天早餐偷吃了两块慕斯蛋糕,水果夹心,上面厚厚地裹着一层奶油。她没有忘...
    做个温柔的吟诗者阅读 452评论 0 0