1. 模块
    1、什么是模块?
    可以理解为一个py文件其实就是一个模块。比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可
    2、模块首先从当前目录查询,如果没有再按path顺序逐一查询(sys.path
    3、一个模块只会被导入一次。
  1. 模块的导入方式:
    0import sys        导入模块
    1from sys import path from语句从模块中导入一个指定的部分(提倡的写法)
    2from …… import *   把一个模块的所有内容全都导入(建议不要用这种)
  1. 3from py文件名 import 类名 (适合同级目录引用)
    4from 文件名 import py文件名 (跨目录)
    5import sys
    相对路径:sys.path.append("..\\src\\function")
    绝对路径:sys.path.append("c:\\love\\pythonauto")
  1. 模块的应用示例:
  1. 1 import random
  2. 2 import os,shutil #文件的高级操作
  3. 3 import glob
  4. 4
  5. 5 print(random.choice('abcdefggh')) #随机取一个字母
  6. 6 print(random.choice(["apple","beer","banana"])) #随机取一个注意括号!!!
  7. 7
  8. 8 print(os.getcwd()) #获取当前的工作目录
  9. 9 os.rename('a','b') #重命名文件a为b
  10. 10 os.remove(a) #删除文件a
  11. 11 os.mkdir("test") #在当前目录下创建一个新目录test
  12. 12 os.chdir("c:/aa") #将当前目录改为c:/aa
  13. 13 os.rmdir("c:/aa") #删除这个目录
  14. 14 os.system("mkdir today") #执行系统命令创建一个today的文件夹
  15. 15 shutil.copyfile("源文件","目标文件") #拷贝
  16. 16 shutil.move("源文件","目标文件") #移动
  17. 17
  18. 18 根据通配符进行搜索
  19. 19 print(glob.glob("*.py"))
  20. 20 print(glob.glob("c:/*.txt"))
  1.  
  1. 文件读写
    一般步骤为:
    先用python内置的open()函数打开一个文件,并创建一个file对象,然后调用相关方法进行操作。wb方式是在linux下操作文件时用到的,在Windows下用w
  1. 语法:
    file_object = open(file_name[,access_mode][,buffering])
    access_mode决定了打开文件的模式:只读,写入,追加等。这个参数是非强制的,默认文件访问模式为只读r
  1.  
  1. # 文件路径的三种解决方式:
    # 1、r"d:\test.txt";
    # 2、"d:\\test.txt";
    # 3、d:/test.txt;
  1. 1 doc = "D:/pycharm workspace/practice/day.txt"
  2. 2
  3. 3 f = open(doc,"w")
  4. 4 print("文件名是",f.name)
  5. 5 print("打开方式",f.mode)
  6. 6 f.close() #关闭文件
  7. 7 print("是否关闭文件",f.closed)
  8. 8
  9. 9 fo = open(doc,"w") #以w方式打开文件
  10. 10 fo.write("abcdefgh") #写入文件内容
  11. 11 fo.close() #关闭文件
  1. tell seek的用法
    1tell()方法告诉你文件内的当前位置
    2seek(offset[,where])方法改变当前的位置
    offset变量表示要移动的位数。where变量指定开始移动的参考位置。
    where0表示文件开始处,这是默认值;1表示当前位置;2表示文件结尾
  1.  
  1. 1 fp = open(doc,"r+")   #r+可读可写;r是只读
  2. 2 str = fp.read()   #读取文件中的内容
  3. 3 print(str)   #打印读取的内容
  4. 4 #查找当前位置
  5. 5 position = fp.tell()
  6. 6 print("当前位置",position)
  7. 7 #把指针再次重新定位到文件开头
  8. 8 position = fp.seek(0,0)
  9. 9 str = fp.read(2)    #读取文件中的两个字符
  10. 10 print("文件中的内容为",str)
  11. 11 #关闭打开的文件
  12. 12 fp.close()
  1.  

异常

  1. 捕获异常可以使用try/except语句。
    try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理
    如果不想在异常发生时结束程序,只需要在try里捕获它。
  1. 第一种:
  1. 1 try:
  2. 2 fh = open("d:\log.txt","r")
  3. 3 fh.write("haha")
  4. 4 except Exception as e:
  5. 5 print("错误!无法读取文件",str(e))
  6. 6 else:           #try没有异常的时候才会执行else
  7. 7 print("successfully")
  8. 8 fh.close()
  1.  

第二种:

  1. 1 try:
  2. 2 fh = open("d:\log.txt","r")
  3. 3 fh.write("haha")
  4. 4 except BaseException as e:
  5. 5 print("错误!无法读取文件",str(e))
  6. 6 finally:    #无论如何都执行。用于文件关闭和释放数据库连接等
  7. 7 print("successfully")
  1. ExceptionBaseException可以捕获基本上所有的异常
  1. 练习:
  1. 1 #write
  2. 2 doc = "D:/pycharm workspace/practice/day.txt"
  3. 3 filewirte = open(doc,"w")
  4. 4 filewirte.write("poiuytrewq")
  5. 5 filewirte.close()
  6. 6
  7. 7 #writelines
  8. 8 filewirte1 = open(doc,"r+")
  9. 9 filewirte1.writelines(["daydayup\n","lreanlreanstart"])
  10. 10 filewirte1.close()
  11. 11
  12. 12 #在不关闭文件的情况下读取文件的内容
  13. 13 filewirte1 = open('a.txt',"r+")
  14. 14 filewirte1.write("lreanlreanstart")
  15. 15
  16. 16 filewirte1.seek(0,0) #把光标定位到开始,读取全部文件内容
  17. 17 str = filewirte1.read()
  18. 18 print(str)
  19. 19
  20. 20 # s = filewirte1.seek(0,2) #把光标定位到文件末尾打印有多少字符
  21. 21 # print(s)
  22. 22
  23. 23 filewirte1.seek(0,0)
  24. 24 # filewirte1.truncate() #删除时需先定位到开头位置,删除的是全部
  25. 25 filewirte1.truncate(2) #删除时需先定位到开头位置,保留前两位字符
  26. 26
  27. 27 filewirte1.close()
  1. # 思路:
    # 1、看到遍历首先想到for循环
    # 2、循环需要有要循环的参数,os.listdir()获取文件及其目录
    # 3、打印出完整的路径需要进行路径的拼接
    # 4、需要os.path.join进行路径的拼接
  1. 1 def print_dir(filepath):
  2. 2 for i in os.listdir(filepath): #获取目录中的文件及子目录列表
  3. 3 print(os.path.join(filepath,i)) #把路径组合起来
  4. 4 filepath = "C:\Program Files"
  5. 5 print_dir(filepath)
  1. # 思路:
    # 1、这题比上一题多了一步,就是还需要遍历目录及其下边的文件进行打印
    # 2、首先想到递归查询
    # 3、看到上题已经遍历出来了,我再遍历一下是否是目录,再递归下
    # 4、把文件下所有的文件和目录进行拼接打印
    # 5、遍历是否是一个文件,想到os.path.isdir判断是否为目录的方法
    # 6、有了方法就判断下是就可以啦,让我想到了if语句
    # 7、if判断完了直接调下主函数就达到遍历的效果啦
  1. 1 def show_dir(filepath):
  2. 2 for i in os.listdir(filepath):
  3. 3 path = (os.path.join(filepath,i))
  4. 4 print(path)
  5. 5 if os.path.isdir(path):
  6. 6 show_dir(path)
  7. 7
  8. 8 filepath = "C:\Program Files\Internet Explorer"
  9. 9 show_dir(filepath)

# 思路:

# 准备:根据课上练习的遍历目录及其下的文件

 # 1、递归显示指定目录及下的文件

 # 2、判断文件是否是以.html后缀,再进行打印

  1. 1 def print_dir(filepath):
  2. 2 for i in os.listdir(filepath):
  3. 3 path= os.path.join(filepath,i)
  4. 4 # print(path)
  5. 5 if os.path.isdir(path):
  6. 6 print_dir(path)
  7. 7 if path.endswith(".html"):
  8. 8 print(path)
  9. 9
  10. 10 filepath = "D:\PycharmProjects\cs"
  11. 11 print_dir(filepath)
  1. # 另外!!!
    string = "abcde"
    print(string[0:5:1]) #打印下标从0到4的字符,步长为正向 1
  2.  
  3. # 思路:
    #zheng函数打印从0到4,步长为整向+1。相当于range(3)打印0,1,2
  1. 1 def zheng(string):
  2. 2 rt = ''
  3. 3 for i in range(0, len(string), 1):
  4. 4 print(i)
  5. 5 rt += string[i]
  6. 6 return rt
  7. 7 string = "abcd"
  8. 8 print(zheng(string))
  1. # 思路:
    #len(string1)-1是取字符串的最后一位,返回取值步长为-1
    #中间一位-1其实只取值到0,达到字符串的反转
  1. 1 def dao(string):
  2. 2 tr = ''
  3. 3 for i in range(len(string1)-1, -1, -1):
  4. 4 print(i)
  5. 5 tr += string1[i]
  6. 6 return tr
  7. 7 string1 = "qwert"
  8. 8 print(dao(string1))
  1. #字符串的反转另外一种方式:
  1. 1 def reverse_str(string):
  2. 2 return string[::-1]
  3. 3 string = "abcd"
  4. 4 print(reverse_str(string))

Python自动化--语言基础4--模块、文件读写、异常的更多相关文章

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

    模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...

  2. Python自动化--语言基础6--模块操作之re、MySQL、Excel

    1.Python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("aaa ...

  3. Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者

    1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...

  4. Python自动化--语言基础3--字典、函数、全局/局部变量

    字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...

  5. Python自动化--语言基础8--接口请求及封装

    基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...

  6. Python自动化--语言基础5--面向对象、迭代器、range和切片的区分

    面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...

  7. Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 ! ...

  8. python自动化--语言基础1--数据类型及类型转换

    Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = ("abc" ...

  9. python自动化--语言基础五面向对象、迭代器、range和切片的区分

    面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...

随机推荐

  1. [知了堂学习笔记]_eclipse引入svn插件,并将项目同步到svn

    1. eclipse中不存在SVN问题的解决 1.1发现Team->Share project 下没有svn. 1.2下载安装svn插件. 选择help->Eclipse Marketpl ...

  2. banner无缝轮播【小封装】

    转载:http://www.qdfuns.com/notes/23446/d1691a1edf5685396813cc85ae6ab10f.html 一直在重复的写banner,写了了好几个,然后每次 ...

  3. System.Web.Mvc 3.0.0.1 和 3.0.0.0 有什么区别?被 Microsoft ASP.NET MVC 的一次安全更新害惨了!!!

    今天更新站点时,发现网站竟然报错 ... uses 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856 ...

  4. python_5_模块

    创:5_4_2017 修: 什么是模块? --标准库+第三方库+自定义,为实现某一方面的功能集合(变量,函数,类) 如何安装第三方库? --pip install 第三方库 如何导入和使用模块? -- ...

  5. 微信小程序实战:天气预报

    接触微信小程序也有一段时间了,以天气预报练一下手. 主要实现了以下功能: (1) 首页图标式菜单,便于以后扩展功能 (2)首页顶部滚动消息 (3)页面右上角三点菜单转发功能,便于小程序的传播 (4)天 ...

  6. java常用类--字符串

    String import java.io.IOException; import java.util.Arrays; public class Linkin { public static void ...

  7. 异常org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 11; 注释中不允许出现字符串 "--"。的原因

    是由于编码格式不统一导致的. 把ecplise的workpace的编码改成utf-8

  8. 08_jquery基础应用第一天

    视频来源:麦子学院 讲师:李景山

  9. C# 类型基础(下)

    前面介绍了基本的类型,接下来我们讲讲类型的转换 值类型的两种表现形式:未装箱和已装箱 ,而引用类型总是处于装箱形式 int count = 10; object obj = count; 装箱:值类型 ...

  10. 浅谈ES6

    ECMAScript6.0(简称ES6)是javaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,使得javaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言 ...