• python自动化--语言基础四模块、文件读写、异常


    模块
    1、什么是模块?
    可以理解为一个py文件其实就是一个模块。比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可
    2、模块首先从当前目录查询,如果没有再按path顺序逐一查询(sys.path)
    3、一个模块只会被导入一次。
    模块的导入方式:
    import sys          导入模块
    from sys import path      from语句从模块中导入一个指定的部分(提倡的写法) 
    from time import time ,localtime 导入time模块中的两个函数 from …… import *   把一个模块的所有内容全都导入(建议不要用这种) from py文件名 import 类名 (适合同级目录引用) from 文件名 import py文件名 (跨目录) import sys 相对路径:sys.path.append("..\src\function") 绝对路径:sys.path.append("c:\love\pythonauto")
    import os
    print("当前文件路径是:",os.path.abspath(__file__))

    模块的应用示例:
     1 import random
     2 import os,shutil #文件的高级操作
     3 import glob
     4 
     5 print(random.choice('abcdefggh'))                #随机取一个字母
     6 print(random.choice(["apple","beer","banana"]))  #随机取一个注意括号!!!
     7 
     8 print(os.getcwd())              #获取当前的工作目录
     9 os.rename('a','b')              #重命名文件a为b
    10 os.remove(a)                    #删除文件a
    11 os.mkdir("test")                #在当前目录下创建一个新目录test
    12 os.chdir("c:/aa")               #将当前目录改为c:/aa
    13 os.rmdir("c:/aa")               #删除这个目录
    14 os.system("mkdir today")        #执行系统命令创建一个today的文件夹
    15 shutil.copyfile("源文件","目标文件") #拷贝
    16 shutil.move("源文件","目标文件")     #移动
    17 
    18 根据通配符进行搜索
    19 print(glob.glob("*.py"))
    20 print(glob.glob("c:/*.txt"))
     
    文件读写
    一般步骤为:
    先用python内置的open()函数打开一个文件,并创建一个file对象,然后调用相关方法进行操作。wb方式是在linux下操作文件时用到的,在Windows下用w
    语法:
    file_object = open(file_name[,access_mode][,encoding=None])
    access_mode决定了打开文件的模式:只读,写入,追加等。这个参数是非强制的,默认文件访问模式为只读r
    
    
    # 文件路径的三种解决方式:
    # 1、r"d: est.txt";
    # 2、"d:\test.txt";
    # 3、d:/test.txt;

     1 doc = "D:/pycharm workspace/practice/day.txt"
     2 
     3 f = open(doc,"w")
     4 print("文件名是",f.name)
     5 print("打开方式",f.mode)
     6 f.close()                #关闭文件
     7 print("是否关闭文件",f.closed)
     8 
     9 fo = open(doc,"w")       #以w方式打开文件
    10 fo.write("abcdefgh")     #写入文件内容
    11 fo.close()               #关闭文件

    tell seek的用法

    1、tell()方法告诉你文件内的当前位置
    2、seek(offset[,where])方法改变当前的位置
    offset变量表示要移动的位数。where变量指定开始移动的参考位置。
    where为0表示文件开始处,这是默认值;1表示当前位置;2表示文件结尾
    
    
     1 fp = open(doc,"r+")    #r+可读可写;r是只读
     2 str = fp.read()        #读取文件中的内容
     3 print(str)             #打印读取的内容
     4 #查找当前位置
     5 position = fp.tell()
     6 print("当前位置",position)
     7 #把指针再次重新定位到文件开头
     8 position = fp.seek(0,0)
     9 str = fp.read(2)        #读取文件中的两个字符
    10 print("文件中的内容为",str)
    11 #关闭打开的文件
    12 fp.close()
    
    
    
    异常
    捕获异常可以使用try/except语句。
    try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理
    如果不想在异常发生时结束程序,只需要在try里捕获它。
    第一种:
    1 try:
    2     fh = open("d:log.txt","r")
    3     fh.write("haha")
    4 except Exception as e:
    5     print("错误!无法读取文件",str(e))
    6 else:                 #try没有异常的时候才会执行else
    7     print("successfully")
    8     fh.close()
    
    

    第二种:

    1 try:
    2     fh = open("d:log.txt","r")
    3     fh.write("haha")
    4 except BaseException as e:
    5     print("错误!无法读取文件",str(e))
    6 finally:                   #无论如何都执行。用于文件关闭和释放数据库连接等
    7     print("successfully")
    Exception和BaseException可以捕获基本上所有的异常

    练习:
     1 #write
     2 doc = "D:/pycharm workspace/practice/day.txt"
     3 filewirte = open(doc,"w")
     4 filewirte.write("poiuytrewq")
     5 filewirte.close()
     6 
     7 #writelines
     8 filewirte1 = open(doc,"r+")
     9 filewirte1.writelines(["daydayup
    ","lreanlreanstart"])
    10 filewirte1.close()
    11 
    12 #在不关闭文件的情况下读取文件的内容
    13 filewirte1 = open('a.txt',"r+")
    14 filewirte1.write("lreanlreanstart")
    15 
    16 filewirte1.seek(0,0)        #把光标定位到开始,读取全部文件内容
    17 str = filewirte1.read()
    18 print(str)
    19 
    20 # s = filewirte1.seek(0,2)  #把光标定位到文件末尾打印有多少字符
    21 # print(s)
    22 
    23 filewirte1.seek(0,0)
    24 # filewirte1.truncate()     #删除时需先定位到开头位置,删除的是全部
    25 filewirte1.truncate(2)      #删除时需先定位到开头位置,保留前两位字符
    26 
    27 filewirte1.close()
    # 号外!!!
    string = "abcde"
    print(string[0:5:1]) #打印下标从0到4的字符,步长为正向 1

    # 思路:
    #zheng函数打印从0到4,步长为整向+1。相当于range(3)打印0,1,2

    1 def zheng(string):
    2     rt = ''
    3     for i in range(0, len(string), 1):
    4         print(i)
    5         rt += string[i]
    6     return rt
    7 string = "abcd"
    8 print(zheng(string))

    # 思路:
    #len(string1)-1是取字符串的最后一位,返回取值步长为-1
    #中间一位-1其实只取值到0,达到字符串的反转
    1 def dao(string):
    2     tr = ''
    3     for i in range(len(string1)-1, -1, -1):
    4         print(i)
    5         tr += string1[i]
    6     return tr
    7 string1 = "qwert"
    8 print(dao(string1))
    #字符串的反转另外一种方式:
    1 def reverse_str(string):
    2     return string[::-1]
    3 string = "abcd"
    4 print(reverse_str(string))


    is与==的区别:

    a = 1
    b = 1.0
    print(a is b) #比较id内存地址
    print(a == b) #比较值
  • 相关阅读:
    【嵌入式硬件Esp32】Ubuntu18.04 更换阿里云软件源
    【嵌入式硬件Esp32】Ubuntu 1804下ESP32交叉编译环境搭建
    【嵌入式硬件Esp32】Eclipse c++切换回英文方法
    Ant Design使用问题记录
    C#调用python脚本
    C# 6新特性简单总结
    ASP.NET动态网站制作(30)-- WEBService
    ASP.NET动态网站制作(29)-- 正则
    ASP.NET动态网站制作(28)-- 三层框架(2)
    ASP.NET动态网站制作(27)-- 三层框架(1)
  • 原文地址:https://www.cnblogs.com/hanxiaobei/p/6529427.html
Copyright © 2020-2023  润新知