模块
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--模块、文件读写、异常的更多相关文章

  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. RAC某节点v$asm_disk查询hang分析处理

    主题:RAC某节点v$asm_disk查询hang分析处理 环境:Oracle 11.2.0.3 RAC 故障描述:RAC环境2个节点,节点1查询v$asm_disk正常返回结果,节点2查询v$asm ...

  2. [转]另一种遍历Map的方式: Map.Entry 和 Map.entrySet()

    转自: http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这个 ...

  3. 理解rem实现响应式布局原理及js动态计算rem

    前言 移动端布局中,童鞋们会使用到rem作为css单位进行不同手机屏幕大小上的适配.那么来讲讲rem在其中起的作用和如何动态设置rem的值. 1.什么是rem rem是相对于根元素(html标签)的字 ...

  4. Linuxc - 执行c程序

    1.新建工作空间 root@jiqing-virtual-machine:~/cspace/les1# pwd /root/cspace/les1 2.新建c程序 root@jiqing-virtua ...

  5. Django 模版中如何对主菜单进行选中?

    问题描叙: 在实际模版中,返回的页面我们想要主菜单保持一种状态,这个主菜单进去的子页面,都需要保持主菜单选择状态 例如 主菜单是 课程, 下面展现的章节和视频页面时候, 课程这个主菜单在展现这个菜单下 ...

  6. scrapy_Response and Request

    scrapy中重要的两个类是什么? Requests.Response 什么是Requests? 网页下载 有哪些参数? url callback headers     # 头部信息 cookie ...

  7. ECLIPS-S测井系统下的仪器挂接 [CV模块]

    常见简写 简写 全拼 含义 CV Calibration and Verification 刻度和校验 CP Primary Calibration 主刻度 VP Primary Verify 主校验 ...

  8. 一步步使用BMC Atrium Orchestrator Vmware Infrastructure Event Monitor

    本教程将一步步演示怎么使用BMC Atrium Orchestrator (BAO) Vmware Infrastructure Event Monitor来监控VSphere Webservice的 ...

  9. java日志概述和原理

    OK,现在我们来研究下Java相关的日志. 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开发人员来说,在程序中使 ...

  10. 转载-Linux Shell 数组建立及使用技巧

    转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...