python文本文件读取失败_Python模块、文件读写、异常

模块

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))

f3df70aae734

希望本文对你有所帮助~~如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以加入我们。642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值