模块
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__))
模块的应用示例:
 import random
import os,shutil #文件的高级操作
import glob print(random.choice('abcdefggh')) #随机取一个字母
print(random.choice(["apple","beer","banana"])) #随机取一个注意括号!!! print(os.getcwd()) #获取当前的工作目录
os.rename('a','b') #重命名文件a为b
os.remove(a) #删除文件a
os.mkdir("test") #在当前目录下创建一个新目录test
os.chdir("c:/aa") #将当前目录改为c:/aa
os.rmdir("c:/aa") #删除这个目录
os.system("mkdir today") #执行系统命令创建一个today的文件夹
shutil.copyfile("源文件","目标文件") #拷贝
shutil.move("源文件","目标文件") #移动 根据通配符进行搜索
print(glob.glob("*.py"))
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:\test.txt";
# 2、"d:\\test.txt";
# 3、d:/test.txt;
 doc = "D:/pycharm workspace/practice/day.txt"

 f = open(doc,"w")
print("文件名是",f.name)
print("打开方式",f.mode)
f.close() #关闭文件
print("是否关闭文件",f.closed) fo = open(doc,"w") #以w方式打开文件
fo.write("abcdefgh") #写入文件内容
fo.close() #关闭文件
tell seek的用法
1、tell()方法告诉你文件内的当前位置
2、seek(offset[,where])方法改变当前的位置
offset变量表示要移动的位数。where变量指定开始移动的参考位置。
where为0表示文件开始处,这是默认值;1表示当前位置;2表示文件结尾

 fp = open(doc,"r+")    #r+可读可写;r是只读
str = fp.read()   #读取文件中的内容
print(str)   #打印读取的内容
#查找当前位置
position = fp.tell()
print("当前位置",position)
#把指针再次重新定位到文件开头
position = fp.seek(,)
str = fp.read()    #读取文件中的两个字符
print("文件中的内容为",str)
#关闭打开的文件
fp.close()

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

第二种:

 try:
fh = open("d:\log.txt","r")
fh.write("haha")
except BaseException as e:
print("错误!无法读取文件",str(e))
finally:    #无论如何都执行。用于文件关闭和释放数据库连接等
print("successfully")
Exception和BaseException可以捕获基本上所有的异常
练习:
 #write
doc = "D:/pycharm workspace/practice/day.txt"
filewirte = open(doc,"w")
filewirte.write("poiuytrewq")
filewirte.close() #writelines
filewirte1 = open(doc,"r+")
filewirte1.writelines(["daydayup\n","lreanlreanstart"])
filewirte1.close() #在不关闭文件的情况下读取文件的内容
filewirte1 = open('a.txt',"r+")
filewirte1.write("lreanlreanstart") filewirte1.seek(,) #把光标定位到开始,读取全部文件内容
str = filewirte1.read()
print(str) # s = filewirte1.seek(,) #把光标定位到文件末尾打印有多少字符
# print(s) filewirte1.seek(,)
# filewirte1.truncate() #删除时需先定位到开头位置,删除的是全部
filewirte1.truncate() #删除时需先定位到开头位置,保留前两位字符 filewirte1.close()
# 号外!!!
string = "abcde"
print(string[0:5:1]) #打印下标从0到4的字符,步长为正向 1 # 思路:
#zheng函数打印从0到4,步长为整向+1。相当于range(3)打印0,1,2
 def zheng(string):
rt = ''
for i in range(, len(string), ):
print(i)
rt += string[i]
return rt
string = "abcd"
print(zheng(string))
# 思路:
#len(string1)-1是取字符串的最后一位,返回取值步长为-1
#中间一位-1其实只取值到0,达到字符串的反转
 def dao(string):
tr = ''
for i in range(len(string1)-, -, -):
print(i)
tr += string1[i]
return tr
string1 = "qwert"
print(dao(string1))
#字符串的反转另外一种方式:
 def reverse_str(string):
return string[::-]
string = "abcd"
print(reverse_str(string)) is与==的区别: a = 1
b = 1.0
print(a is b) #比较id内存地址
print(a == b) #比较值

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

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

    模块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自动化--语言基础8--接口请求及封装

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 创建Filter步骤

    创建Filter步骤: 创建Filter处理类 必须实现javax.servlet.Filter,该接口有init()完成filter初始化,destroy()完成资源回收,doFilter()过滤 ...

  2. python的for else语句

    Python循环中的else语句 绝大部分编程语言中都有条件判断语句,比如 if … else ,在大部语言中,else 一般只在条件判断语句中出现,与 if 语句配套出现,不过在 Python 中, ...

  3. Jsp+servlet 验证码案例

    昨晚在csdn看到一位前辈写一个ajax+servlet+jsp验证.顿时心血来潮,在阅读前辈的代码下我亲手体验一下,做了一个验证码生成工具类.以供大家做个參考. 1:加入VeriyCodeUtils ...

  4. YII数据流程浅析

    MVC就不解释,直接上代码分析数据流程: 数据库图: 模型部分介绍: <?php /* * 前两个方法必须写 * 继承自CActiveRecord类 这个类位于 \framework\db\ar ...

  5. HDU 5067 Harry And Dig Machine(状压dp)

    HDU 5067 Harry And Dig Machine 思路:因为点才10个,在加上一个起点,处理出每一个点之间的曼哈顿距离,然后用状压dp搞,状态表示为: dp[i][s],表示在i位置.走过 ...

  6. MariaDB基础操作

    MariaDB: MariaDB是MySQL源代码的一个分支,随着Oracle买下Sun,MySQL也落入了关系型数据库王者之手.在意识到Oracle会对MySQL许可做什么后便分离了出来(MySQL ...

  7. ZOJ - 3471 Most Powerful (状态压缩)

    题目大意:有n种原子,两种原子相碰撞的话就会产生能量,当中的一种原子会消失. 问这n种原子能产生的能量最大是多少 解题思路:用0表示该原子还没消失.1表示该原子已经消失.那么就能够得到状态转移方程了 ...

  8. 几种查看CentOS系统版本号和位数的方法

    查看系统版本号: cat /etc/redhat-release cat /proc/version uname -a cat /etc/issue 查看64位还是32位: getconf LONG_ ...

  9. 硬件十万个为什么——运放篇(五)PCB设计技巧

    1.在PCB设计时,芯片电源处旁路滤波等电容应尽可能的接近器件.典型距离是小于3MM 2.运算放大器芯片电源处的小陶瓷旁路电容在放大器处于输入高频信号时能够为放大器的高频特性提供能量电容值的选择依据输 ...

  10. 【EasyUI】——可编辑的DataGrid

    利用EasyUI做的可编辑的DataGrid大致分为两种类型.一种是启动行编辑的,一种是启动单元格编辑.且不说启动编辑的效果怎样.单启动编辑这一块它就封装的非常厉害.好些功能没有办法去更改.如今项目的 ...