码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-03-20 17:08:42      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:文件中   应用   数据   pycharm   move   当前目录   app   bcd   src   

模块
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--模块、文件读写、异常

标签:文件中   应用   数据   pycharm   move   当前目录   app   bcd   src   

原文地址:https://www.cnblogs.com/zhanleishang/p/10565985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!