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

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][,buffering])
access_mode决定了打开文件的模式:只读,写入,追加等。这个参数是非强制的,默认文件访问模式为只读r
# 文件路径的三种解决方式:
# 1、r"d:\test.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\n","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()

# 思路:
# 1、看到遍历首先想到for循环
# 2、循环需要有要循环的参数,os.listdir()获取文件及其目录
# 3、打印出完整的路径需要进行路径的拼接
# 4、需要os.path.join进行路径的拼接
1 def print_dir(filepath):
2 for i in os.listdir(filepath): #获取目录中的文件及子目录列表
3 print(os.path.join(filepath,i)) #把路径组合起来
4 filepath = "C:\Program Files"
5 print_dir(filepath)
# 思路:
# 1、这题比上一题多了一步,就是还需要遍历目录及其下边的文件进行打印
# 2、首先想到递归查询
# 3、看到上题已经遍历出来了,我再遍历一下是否是目录,再递归下
# 4、把文件下所有的文件和目录进行拼接打印
# 5、遍历是否是一个文件,想到os.path.isdir判断是否为目录的方法
# 6、有了方法就判断下是就可以啦,让我想到了if语句
# 7、if判断完了直接调下主函数就达到遍历的效果啦

1 def show_dir(filepath):
2 for i in os.listdir(filepath):
3 path = (os.path.join(filepath,i))
4 print(path)
5 if os.path.isdir(path):
6 show_dir(path)
7
8 filepath = "C:\Program Files\Internet Explorer"
9 show_dir(filepath)

# 思路:
# 准备:根据课上练习的遍历目录及其下的文件
# 1、递归显示指定目录及下的文件
# 2、判断文件是否是以.html后缀,再进行打印

1 def print_dir(filepath):
2 for i in os.listdir(filepath):
3 path= os.path.join(filepath,i)
4 # print(path)
5 if os.path.isdir(path):
6 print_dir(path)
7 if path.endswith(".html"):
8 print(path)
9
10 filepath = "D:\PycharmProjects\cs"
11 print_dir(filepath)

# 另外!!!
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))
Python自动化--语言基础4--模块、文件读写、异常的更多相关文章
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- Python自动化--语言基础6--模块操作之re、MySQL、Excel
1.Python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("aaa ...
- Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者
1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...
- Python自动化--语言基础3--字典、函数、全局/局部变量
字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...
- Python自动化--语言基础8--接口请求及封装
基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...
- Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...
- Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组
运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 % 取模(余数) // 取相除的整数部分 / (5/2=2.5) 比较运算符 == 等于 ! ...
- python自动化--语言基础1--数据类型及类型转换
Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = ("abc" ...
- python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...
随机推荐
- 《HelloGitHub》第 22 期
公告 年前最后一期,下次就是年后了,老时间 每月的 28 号,年后见- <HelloGitHub>第 22 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 G ...
- Ajax常用实例
摘录自:http://www.cnblogs.com/gaopeng527/p/4459622.html 1. 级联下拉列表 例1.1 级联下拉列表. (1)编写AjaxRequest.js文件,并将 ...
- linkin大话数据结构--数组
数组概述:如何正确理解数组?数组也是一种类型 数组是多个相同类型数据的组合,实现对这些数据的统一管理.数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元 ...
- Linux使用top与free命令查看CPU与内存使用情况
top命令: 显示内容解释: 第一行top分别为:当前时间:系统运行天数:使用者个数:系统负载的平均值,后面的三个值分别为1分钟前.5分钟前.15分钟前进程的平均数,这个数值超过 CPU 数目时,说明 ...
- PDO prepare预处理语句
预处理语句 $dsn="mysql:host=localhost;dbname=emp"; try{ $pdo=new PDO($dsn,'root','root'); }catc ...
- 【转】 C++易混知识点2. 函数指针和指针函数的区别
我们时常在C++开发中用到指针,指针的好处是开销很小,可以很方便的用来实现想要的功能,当然,这里也要涉及到指针的一些基本概念.指针不是基本数据类型,我们可以理解他为一种特殊类型的对象,他占据一定空间, ...
- Python算法——二叉树
一.二叉树 from collections import deque class BiTreeNode: def __init__(self, data): self.data = data sel ...
- [DeeplearningAI笔记]ML strategy_2_1误差分析
机器学习策略-误差分析 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1 误差分析 训练出来的模型往往没有达到人类水平的效果,为了得到人类水平的结果,我们对原因进行分析,这个过程称为误差 ...
- 关于css选择器的一些细节
1.如何区分一个html标签的不同样式 使用标签名.类名的方式解决 如果希望特别强调其中的某一个或几个元素,处理的方案有三个: 1.id选择器 2.class选择器 3.层级选择器 看下面的代码: & ...
- phpstorm中使用xdebug配置cli模式的调试
这里略去xdebug的安装,安装很简单可以下载源码包,动态编译进去! 环境: Dev 服务器(IP:192.168.2.100),安装phpstorm,用来做开发任务! Server服务器(IP:19 ...