zoukankan      html  css  js  c++  java
  • Python自动化开发

    一、字符串

    特性:字符串本身不可修改,除非字符串变量重新赋值。Python3中所有字符串都是Unicode字符串,支持中文。

    >>> name  = "Jonathan"

    >>> name = "Jonathan" + "Ni"

    >>>print(name)

    Jonathan Ni  # name 被重新赋值,并不是改变原先字符串 "Joanthan"

     

     

     

     

     

    字符串运算符

    实例 a = "Hello"; b = "Python"

    操作符 描述 实例
    + 字符串连接 a + b输出结果 HelloPython
    [] 通过索引获取字符串中字符 a[1]输出结果 e
    [:] 截取字符串中一部分 a[0:2]输出结果 He
    in 成员运算符 - 如果字符串中包含给定的字符返回 True H in a 输出结果 True
    not in 成员运算符 - 如果字符串中不包含给定的字符返回 True N not a 输出结果 True
    格式化字符串 %s World!"%a 输出结果 Hello World!

     

     

     

     

     

     

     

     

     

     字符常用方法

    print("jonathan".capitalize()) # 首字母大写,其余小写

    print("JonaThan".casefold()) # 转为小写字符,lower() 只是ASCII编码大写转小写

    print("Jonathan".center(20, "*")) # 居中,两侧填充指定字符到指定宽度

    print("Jonathan".count("an")) # 统计指定字符出现次数

    print("Jonathan".endswith("a")) # 判断是否以指定字符结尾

    print("Joanthan".startswith("Jo")) # 判断是否以指定字符开始

    print("Jonathan".replace("J", "j")) # 替换指定字符

    msg = "My name is {name},and {age} years old.".format(name="Jonathan", age=28) # 格式化

    print(msg)

    二、列表

    列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。

    更改本身与字符串对比分析

    定义列表

    names = []

    通过下标访问列表中的元素,下标从0开始计数

    names[0] = "Jonathan"   # 修改元素

    names.append("Jim")   >>>      ["Jonathan""Alex""Tom""Catherine", "Jim"]    # 在列表最后附件元素

    names.insert(2, "Linda")  >>>  ["Jonathan""Alex""Linda",  "Tom""Catherine", "Jim"]     # 在下标为2的地方插入元素,其他元素后移动

    names.remove("Linda")   >>>  ["Jonathan", "Alex""Tom""Catherine""Jim"]   # 删除第一个检索到的元素

    del names[4]    >>>   ["Jonathan""Alex""Tom""Catherine"]   # 按下标删除元素

    names.index("Alex")   >>>  1   # 返回下标

    names.sort()    >>> ["Alex""Catherine""Jonathan""Tom"]     #  按照ASCII正序排列

    names.reverse()   >>>   ["Tom", "Jonathan""Catherine""Alex"]  # 元素反转

    names.count("Tom")   >>>  1  # 返回出现次数

     

     

     

    三、元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    names = ()

    它只有2个方法,一个是count,一个是index

     

    四、字典

    字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

    构成:字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    d = { key1 : value1, key2 : value2 }

    特性:

    1) 键必须是唯一的,但值则不必

    2) 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组

    3) 字典是无序的 

    4)字典是另一种可变容器模型,且可存储任意类型对象

    5) 字典内部构成 Hash算法,查询效率高

    使用字典:

    import copy

    # 定义字典

    names = {

    "stu1101": "001",

    "stu1102": "002",

    "stu1103": "003"

    } 

    # 查找

    print(names)  # 字典无序,每次输出结果顺序不同

    print(names["stu1101"])   # 把相应的键放入方括弧

    print(names["stu1104"])   # 不存在该键名时,返回KeyError: 'stu1104'

    print(names.get("stu1104","000")) # 不存在该键名时,返回默认值 '000'

    # 修改,定位键名则修改,无该键值则添加该键值对

    names["stu1101"] = {

    "name": "Jack",

    "age": 20,

    "address": "Beijing China"

    }

    print(names["stu1101"]["name"

    # 删除 pop()  del

    print(names.pop(names["1103"])  # 删除键名为"1103"的键值对元素,并返回该值 "003"

    del names["stu1102"]  

    # 复制

    credit_card1 = {

      "name": "Jonathan"

      "card": {

        "id": "1101",

        "balance": 800

      }

    }

    credit_card2 = credit_card1  # 前复制

    credit_card3 = copy.deepcopy(credit_card2) #深复制

     

    credit_card2["name"] = "Rose"     # credit_card2的"name"更新为"Rose",credit_card1的"name"保持不变

    credit_card3["name"] = "Linda"   # credit_card2的"name"更新为"Linda",credit_card1的"name"保持不变

    credit_card1["card"]["balance"] -= 100   # credit_card1的"balance" 与 credit_card2的"balance" 同步变化

    credit_card2["card"]["balance"] -= 200   # credit_card2的"balance" 与 credit_card1的"balance" 同步变化

    credit_card3["card"]["balance"] -= 500    # credit_card3的"balance" 与 credit_card1的"balance" 是两份不同的变量空间

    五、文件操作

    1、IO简介

    IO - Input/Output,也就是输入和输出。程序和运行时数据都是在内存中驻留,由CPU来执行,通常需要与磁盘、网络等进行数据交换,就

    需要IO接口。

    IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动。

    Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,

    浏览器和服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据。

    由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。比如要把100M的数据写入磁盘,

    CPU输出100M的数据只需要0.01秒,可是磁盘要接收这100M数据可能需要10秒,有两种办法可以解决:

    • 第一种是CPU等着,程序暂停执行后续代码,等100M的数据在10秒后写入磁盘,再接着往下执行,这种模式称为同步IO

    • 另一种是CPU不等待,只是告诉磁盘写入,后续代码可以立刻接着执行,这种模式称为异步IO

    总结:

    使用异步IO来编写程序性能会远远高于同步IO,但是异步IO的缺点是编程模型复杂。

    操作IO的能力都是由操作系统提供的,每一种编程语言都会把操作系统提供的低级C接口封装起来方便使用,Python也是。

    2、文件操作

    在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,

    所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),

    • 通过操作系统提供的接口从这个文件对象中读取数据(读文件)
    • 把数据写入这个文件对象(写文件)

    对文件操作流程

    1) 打开文件,得到文件句柄并赋值给一个变量

    2) 通过句柄对文件进行操作

    3) 关闭文件

    f = open("lyrics", encoding="utf-8", mode="r")     # 打开文件

    first_line = f.readline()  # 读一行

    print("first line:",first_line) # 打印该行

    print("我是分割线".center(50,"*"))  # 读取剩下的所有内容,文件大时不要用

    data = f.read()  # 打印文件

    print(data)

    f.close() # 关闭文件

    打开文件的模式有:

    r, 只读模式 (默认)

    w,只写模式 (不可读;不存在则创建;存在则删除内容)

    a,追加模式 (可读; 不存在则创建;存在则只追加内容)

    "+" 表示可以同时读写某个文件

    r+,可读写文件。(可读;可写;可追加)

    w+,写读

    a+,同a

    "b"表示处理二进制文件 (如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    rb、wb、ab

  • 相关阅读:
    别让你的生活止于平庸!(摘)
    NSURLSession 请求
    第三方原理
    iOS实用的小技巧
    简书APP
    网络请求
    JQuery 简介
    struts2拦截器的实现原理及源码剖析
    hibernate配置文件注意点
    hibernate中三种状态
  • 原文地址:https://www.cnblogs.com/jonathan1314/p/6288111.html
Copyright © 2011-2022 走看看