新想法:
    送矿泉水---送货app






linux操作系统
    bin  sbin 可执行程序
    home 目录
    temp 临时生成的目录

根目录:
    /
用户目录:
    用户工作目录或家目录
    /home/user

相对路径:
    上一层路径(父目录) 。。
    当前路径 。
    根目录 。。和。 都是代表根目录

文件的权限:
r --read
w --write
x --执行

Linux命令操作:最少的有200个
    Linux命令格式: command [-options] [parameter]

    黑窗口 ctrl + shift + +/- 字体放大缩小

    ls 显示当前路径
    pwd 显示当前路径 
    cd 。。 跳转到
    ls -l   查看的文件夹和文件
    drwxrwxr文件
    - 文件夹

    cd 文件夹: 跳到文件或者文件夹

    自动补全功能
      cd D(ownloads) cd + table键

     空格键  翻页功能

     q 退出文件

    历史命令:
    history 

    touch 1.py  在当前目录创建一个1.py文件(前提是获取超级管理员权限)
    ls -lh 查看文件,并将文件的大小以kb的形式显示出来
    ls -alh 显示隐藏文件并显示以kb大小的文件

    ls *.py 显示以什么结尾的文件

    ls 1.* 显示以1开头的文件
    ls 1?* ? 代表站位符
    ls 1[23]3.py [23]里面代表是2或者3的
    ls \*a 查找文件名为*a 的文件

    重定向:
    ls -lha >ls.txt 创建文件,并将内容显示到文件中 
     --> 接下来用记事本打开:gedit   ls.txt

     ls -lha >> ls.txt: 在ls.txt文件中继续追加内容,前面的内容不擅长
     cat ls.txt 查看文件内容,不可以编辑
     more ls.txt 分页显示,按空格进行查看页面内容

     水管功能
     ls -alh | more  右边的程序调用左边的程序,就是将左边的程序显示到右边去。

     cd ~  ---> pwd 跳转到家目录

     cd ctrl c 强制停止
     cd ctrl z 强制停止
     cd -  快速回到上一次路径

     pwd 显示当前文件路径

     mkdir 创建文件夹
     rmdir dongge/      移除文件夹 remove的意思,删除非空文件夹
     rm 2.py            删除文件
     rm dongge -r  删除带有文件的文件夹,递归的删除

     rm dongge -rf 强制删除带有文件的文件夹


     创建链接文件ln         相当于快捷文件
     软连接****
     ln -s 123.py  123link_s.py  前面为源文件,后面为快捷文件

     硬链接**** 
     同样指向文件,不止一个快捷键指向源文件

     查看文件内容,cat  (也可以完成多个文件的合并)
     cat 234.py > 100.py  合并文件内容
     cat 324.py >> 230.py  合并文件内容

     grep ‘oo’ 101.py            模糊搜索 oo 在文件的位置

     grep ’箭头上00‘  搜索以什么开头的
     grep [Hhello]

     拷贝
     cp 23.py test/  拷贝。。到哪个项目下
     mv 12.py test/ 移动
     mv 12.py   14.py 重命名
     tree  以树的方式进行显示

     打包
     tar -cvf(test.tar) *.py
     解包
     tar -xvf test.tar 

     压缩包
     gzip test.tar ====> test.tar.gz
     gzip -d test.tar.gz  解压缩操作--->test.tar

     打包解包
     tar -zcvf test.tar.gz *.py


     切换到超级管理员
     sudo -s  美元号变为jin号


     系统管理

     查看日历
     cal -2016


     查看时间   
     date 

     查看进程信息:ps
     ps -aux 查看进行程序

     ctrl +shift +z 打开新的命令窗口

     kill -9 823   绝对杀死程序

     需要管理员权限
     reboot 重启
     shutdown 关机


     top 显示资源利用率的情况

     df 检测磁盘空间
     df -lh

     du  -a -lh 查看当前目录的情况

    查看网卡信息:
    ipconfig

    ping 120。1204.99  连接




第二天:

    在Ubuntu下:
    登陆用户:
    who 
    当前登陆用户:
    whoami

 远程登陆电脑
 先ping 192.168.21.76
 然后
 ssh admin@192.168.21.76  --y
 who 查看当前登陆的用户信息 whoami 查看我是谁
 ssh 用户名@ip地址
 exit 退出


用户管理:
    1,sudo -s
    2,添加新的账户:useradd laowang
    3 passwd  laowang 输入老王账号的密码,
    4 exit 退出,回到一开始的用户,回到上一个用户
    5 su - laowang  -->切换到老王的账户

    --> useradd loawang -m  --->自动创建家目录

    cat /etc/passwd  查看所有的用户名跟密码


    删除用户
    userdel laozhang
    ubutun sudu 
    centerOS  su root


查看组:
groupadd aa
groupmod Ubuntu下
删除添加组 groupadd www  groupdel www

修改用户组
 usermod -g aaa laosong   aaa->变为老宋
查看用户所在组:groups python  (adm sudo)


改组的功能:
usermod -a -G adm laosong
usermod -a -G sudo laosong 

修改文件权限:chmod
-rw--W-r- - 
第一组表示文件拥有者权限 文件同组者权限可不可以执行)其他人_





Ubuntu下安装软件:
    命令行安装:gedit /etc/apt/sources.list
    apt-get update 更新如那件
    apt-get install sl  安装软件包

    1  备份:
        cp /etc/apt/sources.list  /etc/apt/sources.list.backup
    2   修改 更新源
        gedit /etc/apt/sources.list
    3  sudo -s  切换到管理员
         可以为 sudo 
    4 sudo apt-get update 让更新源生效    

    5 sudo apt-get install  软件的名字

    6 删除软件
        sudo apt-get remove package 删除包
        sudo apt-cache search package 搜索软件包
        sudo apt-cache show package 获取包信息
        sudo apt-get install  package --reinstall 重新安装包
        sudo apt-get source package 下载软件的源码
        ------等等

    ftp服务器(常用服务器构建)
    FTP : File Transfer Protocol 文件传输协议

    安装vsftpd服务器\

     sudo apt-get install vsftpd
    配置vsftpd.conf文件
     sudo vi /etc/vsftpd.conf

    SSH 服务器搭建 
    sudo apt-get install openssh-server
    远程登陆

    远程拷贝文件
    scp -r(是否上传文件夹) FileName 源文件  用户名@ip :home/python/Desktop 文件地址
    从远端拷贝到本地:
    scp python@IP  本地路径  远程文件路径+文件名

    拷贝到-->
    scp a.txt 128.128.323.23:/home/python/Desktop


编辑器vim Visual interface 简称
    vim hello.py
    1 打开vim后 默认进入一种状态->命令模式
    输入小写i --》由命令模式转换到编辑模式

    esc --》 退出编辑模式

    末行模式:光标在最后
        编码模式按下esc状态 --》输入: wq (保存退出)
    等于  ---:x


vim 常见命令:
    上下左右移动hjkl
    选中字母按下i 输入abc 会再i前面输入
    选中字母按下a ,输入abc 会在字母后面输入abc

    输入I/A 直接跳到行首,输入abc,会在行首出现abc
    输入O/o 从命令模式进入编辑模式

    G/g 快速定位到9, --》9G 此时并没有进入编辑模式
    快速回到最后一行 G          --gg 回到第一行

    w 一个单词一个单词的调 w-word
    { 段落的跳

    删除 dd 一行
    5dd 指定数 向后删除5行
    u 撤销

    x 向后面进行删除
    X 向前面进行删除

    D 光标后面到行末全删除
    D0 

    ctrl +r 反撤销 
    文本右移/左移  》

    :q! 强制退出并不进行保存

    yy张贴 p复制 : 张贴复制

    p2 yy : 下两行进行复制张贴

    dd 剪切/删除的功能
    rH 替换

    : 5,15s/main/MAIN/g 指定行数的替换

    v 选中代码 }} 右缩进

    : 12,23 >>> 整体缩进3次 行数开头,行数结尾



python 基础课程开始

使用地方:

Web应用开发:后台开发
    Django,TurboGears,web2py,Zope等可以轻松开发和管理复杂的web程序
操作系统管理,服务器运维的自动化脚本
 
科学计算
    NumPy,SciPy,Matplotlib 编写科学计算程序
桌面软件
    PyQt,PySide,wxPython,PyGTK快速开发桌面应用程序
服务器软件

游戏
    Python支持更多的特性和数据类型,Lua的功能简单,体积小,
构思实现,产品早起原型和迭代
    YouTube,Google,Yahoo,NASA都在使用python

第一种方式:
    直接在命令行中输入 print ("dsf")
运行 python helloworld.py 第二种方式

第三种方式:
vi helloworld2.py
 chmod u+x helloworld.py

在python文件第一行
#!usr/bin/python --> 判断是否有可执行程序


注释:以#开头的就是注释
多行注释:‘’‘
            的沙发斯蒂芬
          ’‘’

让python 支持中文 
    在文件第一行加入
    #encoding=utf-8

数据类型:

    Numbers数字
        int 有符号整型
        long 长整型,也可以代表八位和十六位进制
        float 浮点型
        complex 复数

    boolean   true,false
    String字符串
    List列表
    Tuple元祖
    Dictionary字典

    查看符号类型type(var)


    查看系统关键字:
        import keyword

    打印值:
    print("my english scrore is %/d"%scrore)
    print("my english scrore is %/d ,,,math scrore is %d"(score,mathScore))

\n 换行


数据类型转换:
 num= int("100)


python3 input 
python2 raw_input input

if age>10 and money >100 and handsome ==1:
    print("他是高富帅") 
else:
    print("呵呵")



if 条件:
    满足条件的时候做的事情
elif 条件2:
    满足条件2的时候坐的事情
elif 条件3:
    满足条件3的时候做的事情



if tiaojian:
    pass #进行占位



import random
random.randin(3,5)
产生3,5的随机数


数据的显示问题:
    %-2d  不够两位也要占用两位,靠左边显示

9*9乘法表视频 

for 变量 in XXX列表或者字符串等:
    循环满足条件时执行的代码
else:
    循环不满足条件时执行的代码


查找是否存在
if findName  in nameList:
    print("找到了")
else 
    print("没有找到")

不存在 not in

返回字符在字符串中的下标:index   names.index("a")

删除
del:根据下标索引进行删除
pop:删除最后一个元素
remove: 根据元素的值进行删除

列表的操作:
增
  append() insert(下标,“a) insert(2,"acb")
删
  del moveNames[0] 下标删除
  movieNames.pop() 删除最后一个
  movieNames.remove("喜洋洋") 按照元素的值进行删除

改
    if "acv" in names:
        xx
    not in

    index()

    count()

    自己编写代码来实现:在遍历的过程中宏进新年给判断,如果找到了那么久标记退出,如果么有找到标记,退出
查   


列表的嵌套:
        列表里面还有列表
        [['北京大学','清华大学'],[‘南开大学’,'天津大学'],['山东大学']]

for temp in schoolNames:
        print(temp)
        for temp2 in temp:
            print(temp2)
        print("----------")


元祖只要不是修改都可以进行操作。相对于列表来说。

全局变量
    如果需要进行全局修改,需要在修改之前设置 global

全局变量在方法中都可以进行调用。

break 退出循环

python的引用:
使用id
a = 100
id(a) --->得到一个地址的引用

魔法方法def __str__(self):
            return "dsfsadf"


类方法:
@classmethod
def setNewAddress(self):
    pass


类对象可以直接调用类属性,也可以直接调用类方法
但是类对象不允许调用 实例属性,并也不允许调用实例方法

如果是一个实例对象
 它可以获取实例属性和类属性的值,但是只能修改实例属性,不能修改类属性
 它还可以调用实例方法和类方法。


 异常的处理:
    try:
        进行的操作代码
    except (IOError,NameError) as errorMsg:
        发生异常后的错误代码
        print(errorMsg)
    else:
        没有出现异常
    finally:
        不管有没有异常,都会执行


    try:
        f = file(test.txt)
        while True:
            line = f.readline()
            ....
    finally:
        f.close()
        print("关闭文件")


raise 引发一个自定义的异常类
raise ShortInputException(len(s),3) // 自定义的异常



python常用三方api

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。


飞机大战
通过练习,将对象思想结合到一起


from PIL import Image

# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('test.jpg')
# 获得图像尺寸:
w, h = im.size
print('Original image size: %sx%s' % (w, h))
# 缩放到50%:
im.thumbnail((w//2, h//2))
print('Resize image to: %sx%s' % (w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
im.save('thumbnail.jpg', 'jpeg')


PIL的ImageDraw提供了一系列绘图方法,让我们可以直接绘图。比如要生成字母验证码图片

from PIL import Image, ImageDraw, ImageFont, ImageFilter

import random

# 随机字母:
def rndChar():
    return chr(random.randint(65, 90))

# 随机颜色1:
def rndColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 随机颜色2:
def rndColor2():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype('Arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill=rndColor())
# 输出文字:
for t in range(4):
    draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')