Python与我的不解之缘

作者: ftc300_carl | 来源:发表于2017-06-04 11:16 被阅读0次

本文属于装糊涂的猪原创,转载请注明出处作者
文中的两个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地址。

相关文章

  • Python与我的不解之缘

    本文属于装糊涂的猪原创,转载请注明出处作者文中的两个Demo地址位于:https://github.com/ftc...

  • 火与我的不解之缘

    先是一点小火苗,随着时间的流逝渐渐蔓延开来,到处都是一团团的火焰,它们聚在一起变成熊熊大火,在我身体里上蹿下跳,...

  • 大学旧事

    开始的开始…… 开始的开始我只是个孩子,后来的后来我就来到了大学,这个注定与我相伴四年,注定与我有不解之缘的人生驿...

  • 惊天地泣鬼神的Excel操作,却是由Python神级程序员做到的

    Python与Excel的不解之缘 所以说在工作中利用Python操作Excel大有人在,那么下面我将讲解一个操作...

  • 家乡记忆(三)

    家乡以柿树、核桃树、花椒树闻名林州市,产品远销全国和海内外。 与我而言,柿树与我印象深刻,有着不解之缘。一年秋天,...

  • keep与我的不解之缘,自律给我自由

    有没有那么一个健身软件,是你卸了又装,明明不是很常用却又感觉丢弃不得,一直是随着你的手机改朝更代常伴左右的。 ...

  • 是谁来自山川湖海,却囿于昼夜厨房与爱

    出生那刻起,人们就与各种食物结下了不解之缘。很多时候,那些关于爱的故事,也蕴藏在与我们悉悉相关的食物里。 ...

  • 珍惜—花开

    没错,还是那盆我舍不得丢弃的石斛兰,与我的不解之缘如此奇妙,总在这特别的日子,开花了 尽管没有绽放,但她依旧愿意为...

  • 社群空间站与我不解之缘

    人们都说机会是上天注定的 ,稍不留意就会稍纵即逝!也有人说是靠自己努力争取的 …… ...

  • Python、Linux与我的缘分

    我毕业快3年了,我接触Linux是在大二时期,那时候不懂什么技术,所以就选择了Ubuntu来学习、使用,它好操作、...

网友评论

    本文标题:Python与我的不解之缘

    本文链接:https://www.haomeiwen.com/subject/njxjxxtx.html