模块
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. Java发送邮件示例

    利用Java发送邮件示例: 1.发送QQ邮件 import java.util.Properties; import javax.mail.Message; import javax.mail.Mes ...

  2. 【python自制】让大白成为你的个人助手!

    我做这个软件就是要让卖萌进行究竟! 官方站点:http://www.jackeriss.com/companions.htm GitHub:https://github.com/Jackeriss/C ...

  3. CentOS firewall添加开放端口

    添加 firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效) 重新载入 firewal ...

  4. A* Pathfinding Project (Unity A*寻路插件) 使用教程

    Unity4.6 兴许版本号都已经内置了寻路AI了.之前的文章有介绍 Unity3d 寻路功能 介绍及项目演示 然而两年来项目中一直使用的是 A* Pathfinding 这个插件的.所以抽时间来写下 ...

  5. 关于android中的单位(dp、sp)

    android让人头疼的适配问题. --------- Android 中的单位大概有这些: 经常使用的dip.sp.有时候用到px. --------- 介绍两个类: TypedValue:有一些单 ...

  6. 杭电 3555 Bomb

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Subm ...

  7. 工作总结 js for 循环遍历 json 数据

    [{"Branch":"Bangkok","2017-01|Replenishment":"0","2017- ...

  8. 2016/1/14 java生成指定范围的随机数

    java生成指定范围的随机数 package edu.sjtu.erplab.io; import java.util.Random; public class RandomTest { public ...

  9. go1

    关键字: break default func interface select case defer go map struct chan else goto package switch cons ...

  10. 类型配置命名空间 —— XML schema

    对于基于 XML 的配置,Spring 2.0 以后告别 DTD 格式(Document Type Definition)的配置文件,开始采用 Schema 格式,Schema 的突出亮点即是可让不同 ...