python基本的操作

# A、调试运行python脚本的工具PyCharm Community Edition(也是JetBrains公司的产品,界面风格统一)
# B、一个比较好的python插件下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
官方的下载网址: https://pypi.python.org/pypi (pypi:python package index),在这上面也可以直接搜索需要的module
下载完成,直接运行setup.py install 就可以安装了,非常方便
# C、最简单的安装module的方法就是通过pip,直接pip 命令就可以自动安装完成。

基本的python脚本书写格式
# *_coding:utf-8_*
if name == “main“:
print “success”

__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。
这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。

通过python的shell查看帮助
例如我们想了解openpyxl这个模块
a.import openpyxl
b.看看这个模块有哪些方法可以使用
dir(openpyxl)
大写开头的就是class,小写的就是方法
c.如果想看具体的介绍,可以使用help
help(openpyxl) ,太长了,可以直接按q退出
help(openpyxl.load_workbook),可以看到具体的使用方法

1.获取当前系统时间:

a.格式化时间
import time
time.strftime('%Y-%m-%d_%H-%M-%S') # 打印结果 2018-04-13_11-25-58
b.脚本休眠等待
time.sleep(5) # 休眠5秒
c.随机休眠时间
import random
t = random.randint(1,10) # 在1-10之间随机获取一个数
time.sleep(t)

2.文件操作:

写文件
f=open(log_path,"a")
f.write(localtime + "\n")

3.字符串操作:

a.判断是否存在指定字符:
if buffer.find("wlan0    UP")<>-1: # 为True就是存在
b.替换指定的字符
str = "abc_def"
str_new = str.replace("_","#") 
print str_new # 输出的是 abc#def
c.按指定的分割符分割字符串
str = "a_b_c"
list = str.split("_")
print list # 打印的结果是一个list['a', 'b', 'c']

4.执行window命令:

a.使用os.system()
import os
a = os.system("ls") # 会将执行的结果打出来
print a # 返回值是0
b.使用os.popen(),例如执行adb命令
lines = os.popen("adb shell ls /system").readlines() # 可以拿到返回值
if len(lines) < 3:
    return 0
else:
    return 1
    例如:
#检查是否是登录界面
lines = os.popen("adb shell dumpsys window |grep mFocus").readlines()
login = False
for l in lines:
    if "LoginActivity" in l:
        login = True
        break

5.获取当前文件路径:

def cur_file_dir(): 
     path = sys.path[0] 
     if os.path.isdir(path): 
         return path 
     elif os.path.isfile(path): 
         return os.path.dirname(path)

6.文件符号:
os.sep

7.保留小数点:
round(a,2)

8.抓log:

def get_time_tag():
    localtime = time.strftime('%Y-%m-%d_%H-%M-%S')
    return "[" + localtime + "]:"
def catch_log(log_path, log=""):
    print log
    f = open(log_path, "a")
    try:
        f.write(get_time_tag())
        f.write(log + "\n")
    except:
        print "write log failed !"
    f.close()

异常try catch处理
try:
       print "run"
   except Exception, e:
    print e.message # 打印出错误的信息

9.创建文件夹:

command="mkdir " + log_folder
os.system(command)

10.字符串中使用多个变量:

command_monkey="%s%s"%(package_name,MONKEY_EVENT)

11.字典操作:

a.添加元素:
data={}
data["gao"]=1
b.查看字典中是否有指定的key值
data = {"name":"zhangsan,"sex":"female"}
data.has_key("name") #返回True
data.has_key("asdf") #返回False

12.大小写互换:

in_str.swapcase()

13.判断元素是否在列表中:

if not i in tmpList:

14.添加字典中元素:

    data={}
    data.setdefault(key, value)
    如果存在则返回key对应的value
    如果不存在则添加进data字典

15、切换工作目录:

os.chdir(cur_path)

16、python安装pip:

通过pip可以很方便的安装一些module,安装pip遇到的问题
a、pip下载
    路径:https://pypi.python.org/pypi/pip#downloads
    我下载的是(pip-10.0.0b2.tar.gz (md5))

b、cd到刚才下载的pip解压路径
    在cmd中执行 setup.py install
    提示一个“ImportError: No module named setuptools” 错误

c、找不到setuptools,我们就下载一个
    路径:https://pypi.python.org/pypi/setuptools
    版本(setuptools-39.0.1.zip (md5))

d、解压这个setuptools,cd到这个目录
    运行 setup.py install 这个命令
    成功后会提示 “Finished processing dependencies for setuptools==39.0.1”

e、再回头去安装pip
    执行setup.py install 
    安装成功

f、最后安装的路径在 C:\Python27\Scripts 可以找到pip.exe
    cd到这个目录,输入pip,成功安装。

g、安装出现错误
     D:\Python2.7.6\lib\site-packages\requests\packages\urllib3\util\ssl_.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
      SNIMissingWarning

    D:\Python2.7.6\lib\site-packages\requests\packages\urllib3\util\ssl_.py:120: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
      InsecurePlatformWarning 

    暂未解决,最后通过在网上下载对应的module,运行setup.py install 单独安装解决。

17、python操作excel表格:

#需要安装openpyxl模块
from openpyxl import load_workbook #使用openpyxl这个module可以很方便的操作excel
xlsx_file_name = "test".decode('utf8')
wb = load_workbook(xlsx_file_name + ".xlsx") #获取excel的workbook对象,拿到了这个后面操作就方便了

sheets = wb.sheetnames #获取所有的sheet名称,打印出来就是所有表的名称
   sheet = wb[sheets[0]] #获取第一个表的方法
#sheet = wb[wb.sheetnames[1]] #对应的这个是获取第二个表格的方法

sheet.max_row #获取表的行数
sheet.max_column #获取表的列数

#遍历操作每一行
max_row = sheet.max_row + 1
   for i in range(1, max_row):
    if sheet.cell(i, 1).font.strike == None and sheet.cell(i, 1).value == None #判断是否有删除线,和判断是不是空值
        print sheet.cell(i, 1).value.encode("utf-8") #把单元格的值打出来,有时需要用utf-8编码


wb.close()

18、python对象转json文件:

import json # python自带的json处理module

#构造数据
data = {}
   data["name"] = "qiang"

   list = [] # python的列表可以直接转化为json
   list.append("L1")
   list.append("L2")
   list.append("L3")
   data["list"] = list

# 转化json的方法,indent:表示用几个空格缩进;ensure_ascii:False可以处理中文
json_str = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False)
   print json_str

#打印的结果
    {
        "list": [
            "L1", 
            "L2", 
            "L3"
        ], 
        "name": "qiang"
    }

19、python自动化处理web浏览器:

使用selenium模块,可以自动点击页面的控件,操作浏览器
a.先下载selenium,再安装,下载地址:https://pypi.python.org/pypi/selenium/
b.在脚本同级目录下放置 chromedriver.exe 驱动,驱动可以在网上下载
基本的使用方法:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.action_chains import ActionChains
    if __name__ == '__main__':
        username = "user_name"
        password = "password"
        url = "https://www.baidu.com"

        browser = webdriver.Chrome() #选择Chrome浏览器
        browser.get(url)
        wait = WebDriverWait(browser, 15)#设置显性等待

        print "找到登录按钮,并且点击"
        wait.until(EC.presence_of_element_located((By.CLASS_NAME, "login-btn"))) #通过class name字段来查找按钮控件
        browser.find_element_by_class_name("login-btn").click() # 点击按钮

        print "查找用户名和密码输入框,发送数据,并且点击。控件的id可以通过浏览器调试获取"
        wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'login_submit_pwd')))
        browser.find_element_by_id("uid").send_keys(username) # 填写用户名
        browser.find_element_by_id("password").send_keys(password) # 填写密码
        browser.find_element_by_class_name("login_submit_pwd").click() # 点击登录

        print "移动到指定的元素位置,并且点击"
        search = browser.find_element_by_xpath("//div[@data-url = '%s']" % url)
        ActionChains(browser).move_to_element(search).perform() #移动到目标元素位置
        wait.until(EC.element_to_be_clickable)
        search.click()

        # browser.close()   #关闭当前窗口,不退出驱动
        browser.quit()  #退出驱动并关闭所有关联的窗口

20、python操作串口:

有时候使用adb去做自动化,adb不稳定会经常断,使用串口是一个比较好的选择
简单的代码:
import serial
import time
def serial_open():
    try:
        if ser.isOpen():
            pass
        else:
            ser.open()
            return 1
    except  Exception, e:
        print "please check wether exist port or port is already opened?"
        return 0

def serial_write(cmd, read_buffer_time=3): 
    p = ser.write(cmd + "")
    time.sleep(read_buffer_time)
    buffer = ""
    buffer = buffer + ser.read(ser.inWaiting())
    return buffer

def catch_log(log_path):
    read_buffer_time = 5
    while 1:
        f = open(log_path, "a")
        if serial_open():
            time.sleep(read_buffer_time)
            localtime = time.strftime('%Y-%m-%d %H:%M:%S')
            print localtime
            buffer = serial_write("", read_buffer_time=read_buffer_time)
            ser.close()
            try:
                f.write(localtime + "\n")
                f.write(buffer)
            except:
                print "write log failed !"
            f.close()


if __name__ == "__main__":
    localtime = time.strftime('%Y-%m-%d_%H-%M-%S')
    log_path = "D:\\log" + "\\seriallog-factory-" + localtime + ".txt"
    ser = serial.Serial()

    ser.port = "COM2"
    ser.baudrate = 115200
    ser.bytesize = 8
    ser.parity = "N"
    ser.stopbits = 1
    ser.timeout = 100
    ser.xonxoff = False
    ser.rtscts = False
    ser.dsrdtr = False

    catch_log(log_path)
    print "finish"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值