python 中不属于数据挖掘分析模块的是(),萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常...

本文介绍了Python中如何读写文件,包括使用`with`语句管理文件、`read()`和`write()`方法,以及如何处理文件路径。同时讲解了异常处理的基本概念,如`try-except`代码块用于捕获和处理错误,特别是`ZeroDivisionError`等常见异常。此外,还展示了如何使用`json`模块存储和加载数据,以及如何在程序运行时处理用户输入并存储到文件中。
摘要由CSDN通过智能技术生成

第一章 Python基础

第十节 文件和异常

从文件中读取数据

读取文件、文件路径

1fe880c7c32b723938f667e3086a440b.png

5c596e0dc35f8508446960e1f85b005b.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 filename = ‘pi_digits.txt‘ #文件名取个代号

2 #读取整个文件

3 with open(filename) as file_object:4 contents = file_object.read()#给内容取个代号

5 print(contents.rstrip())6 #逐行读取

7 with open(filename) as file_object:8 for line in file_object:#给一行内容取个代号

9 print(line.rstrip())

View Code

函数open():接受要打开文件的文件名作为参数。如果没有指定路径,则在当前执行的文件所在的目录中查找指定的文件。此函数返回一个表示文件的对象。

关键字with:表示在不需要访问文件之后将其关闭。

函数read():用于从文件读取指定的字节数,如果未给定或为负则读取所有。到达文件末尾时返回一个空字符串(空行)。打印时可使用函数rstrip()删掉。

相对文件路径:相对于当前运行的程序所在目录。

绝对文件路径:完整的文件路径。

创建包含文件各行内容的列表并使用

使用关键字with时,open()返回的文件对象只在with代码块内使用。如果要在with代码块外访问文件内容,可在里边将文件各行存储在一个列表中待后续使用。

f67008cc3ea9d7e880016ccb4ed0d485.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 filename = ‘pi_digits.txt‘

2 with open(filename) as file_object:3 lines = file_object.readlines()#读完文件

4

5 pi_string = ‘‘ #6 for line inlines:7 pi_string += line.strip()#把每个line的内容去掉空格加入Pi——string

8

9 print(pi_string #打印

10 print(len(pi_string))#量一下你有多长

View Code

注意:读取文本文件时,python将其中所有文本都解读稳字符串。

写入文件

将文本写入文件时,调用open()时需要提供另外一个实参。其中,第一个实参时要打开的文件的名称。第二个实参是指定的模式:读取模式(‘r‘)、写入模式(‘w‘)、附加模式(‘a‘)、读取和写入模式(‘r+‘)。如果省略将以默认的只读模式打开文件。

如果写入的文件不存在,则open()会自动创建它。如果以写入模式打开文件且指定文件对象存在,则返回文件对象前会清空改文件。

4d44b4642bd19c34e6fbdef14d32a702.png

运行结果:

1015ebf80d6b1a21a98c4c3a4fe8201b.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 filename = ‘programming.txt‘

2 with open(filename, ‘w‘) as file_object:3 file_object.write("I love programming.")4 file_object.write("I love programming.\n")#注意换行符\n

5 file_object.write("I love creating new games.\n")

View Code

注意:python只能将字符串写入文本文件。函数write()不会在写入的文本末尾添加换行符。

附加到文件

230ea4204f80de4b2185d3f86e16b4ff.png

运行结果:

7da0286c2d030babefde60044b3255d8.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 filename = ‘programming.txt‘

2 with open(filename, ‘a‘) as file_object:#‘a’ 代表附加模式,在末尾添加内容

3 file_object.write("I also love finding meaning in large datasets.\n")4 file_object.write("I love creating apps that can run in a browser.\n")

View Code

异常

异常时python用来管理程序执行期间发生错误的特殊对象。

异常是使用try-except代码块处理的。如果try代码块中的代码运行无误,则跳过except代码块;如果try代码块中的代码运行出现错误,则运行except代码块。

4187f4b256235eadbec505af9abc58bd.png

ZeroDivisionError是一个异常对象。

8c47c9aa4fdf46b85ba5cfc5f7799111.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 try:#试试

2 print(5/0) #打印5除以0

3 except ZeroDivisionError: #要是爆发“除以0错误”

4 print("You can‘t divide by zero!")#打印你不能除以0

View Code

使用try-except代码块也可以隐藏Traceback,防止恶意攻击等等。

除了try-except代码块还有try-except-else代码块。其中try代码块只包含可能导致错误的代码,而依赖于其成功执行的代码都放在else代码块中。

如果希望发生错误时继续运行,可以在except代码块中使用pass语句。pass语句还充当了占位符,用来提醒我们在程序的某个地方什么都没有做。

常见的异常类型如下:

AttributeError:属性错误,特性引用和赋值失败时会引发属性错误

NameError:试图访问的变量名不存在

SyntaxError:语法错误,代码形式错误

Exception:所有异常的基类,因为所有python异常类都是基类Exception的其中一员,异常都是从基类Exception继承的,并且都在exceptions python 模块中定义。

IOError:python ioerror,一般常见于打开不存在文件时会引发IOError错误,也可以解理为输出输入错误

KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误

IndexError:索引错误,使用的索引不存在,常索引超出序列范围

TypeError:类型错误,内建操作或是函数应于在了错误类型的对象时会引发类型错误

ZeroDivisonError:除数为0,在用除法操作时,第二个参数为0时引发了该错误

ValueError:值错误,传给对象的参数类型不正确,像是给int()函数传入了字符串数据类型的参数。

更多内容可以看看怪伽先森小哥哥的文:

https://blog.csdn.net/u011033906/article/details/79653345

存储数据

模块json可以让我们将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。并且还可以使用json在python程序中分享数据。

函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。

75a16c8761740d5bc9e3d690b7e0c7ff.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 import json #让json来帮忙

2 numbers = [2, 3, 5, 7, 11, 13]3 filename = ‘numbers.json‘

4

5 with open(filename, ‘w‘) as f_obj:6 #函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。

7 json.dump(numbers, f_obj)8

9 #读取整个文件

10 with open(filename) as file_object:11 contents = file_object.read()#给内容取个代号

12 print(contents.rstrip())13

14 with open(filename) as f_obj:#也可以用json.load来打开,毕竟是json自己写的东西,他当然有办法打开

15 numbers =json.load(f_obj)16 print(numbers)

View Code

下面将存取数据和异常结合一下程序运行时,从文件获取用户名,若文件不存在,则提示输入用户名并存储:

02412502af73531839427efee54153b6.png

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 importjson2 #如果以前存储了用户名就加载它

3 #否则提示用户输入用户名并存储它

4 filename = ‘username.json‘

5 ask = ‘‘

6 while ask != "no":7 try:#试试打开username

8 with open(filename) as f_obj:9 username =json.load(f_obj)10 except FileNotFoundError: #如果发生“找不到文件”错误

11 username = input("What is your name?")#让用户自己输入自己的名字

12 with open(filename, ‘w‘) as f_obj:#打开一个以用户的名字的文件,要是没有就创建一个

13 json.dump(username, f_obj)#用json家的dump写文件

14 print("We‘ll remember you when you come back," + username + "!")15 #打印告诉用户我会记住你的

16 ask = input("Next one?yes/no")17 else:18 print("Welcome back," + username + "!")#要不就打印欢迎回来,某某某!

19 ask = input("Next one?yes/no")

View Code

原文:https://www.cnblogs.com/romannista/p/10336510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值