标签:写文件 ack mes article detail open() dump 定义 用户
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())
函数open()
:接受要打开文件的文件名作为参数。如果没有指定路径,则在当前执行的文件所在的目录中查找指定的文件。此函数返回一个表示文件的对象。
关键字with
:表示在不需要访问文件之后将其关闭。
函数read()
:用于从文件读取指定的字节数,如果未给定或为负则读取所有。到达文件末尾时返回一个空字符串(空行)。打印时可使用函数rstrip()
删掉。
相对文件路径:相对于当前运行的程序所在目录。
绝对文件路径:完整的文件路径。
使用关键字with
时,open()
返回的文件对象只在with
代码块内使用。如果要在with
代码块外访问文件内容,可在里边将文件各行存储在一个列表中待后续使用。
1 filename = ‘pi_digits.txt‘ 2 with open(filename) as file_object: 3 lines = file_object.readlines()#读完文件 4 5 pi_string = ‘‘ # 6 for line in lines: 7 pi_string += line.strip()#把每个line的内容去掉空格加入Pi——string 8 9 print(pi_string #打印 10 print(len(pi_string))#量一下你有多长
注意:读取文本文件时,python将其中所有文本都解读稳字符串。
将文本写入文件时,调用open()时需要提供另外一个实参。其中,第一个实参时要打开的文件的名称。第二个实参是指定的模式:读取模式(‘r‘
)、写入模式(‘w‘
)、附加模式(‘a‘
)、读取和写入模式(‘r+‘
)。如果省略将以默认的只读模式打开文件。
如果写入的文件不存在,则open()
会自动创建它。如果以写入模式打开文件且指定文件对象存在,则返回文件对象前会清空改文件。
运行结果:
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")
注意:python只能将字符串写入文本文件。函数write()
不会在写入的文本末尾添加换行符。
运行结果:
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")
异常时python用来管理程序执行期间发生错误的特殊对象。
异常是使用try-except
代码块处理的。如果try
代码块中的代码运行无误,则跳过except
代码块;如果try
代码块中的代码运行出现错误,则运行except
代码块。
ZeroDivisionError
是一个异常对象。
1 try:#试试 2 print(5/0) #打印5除以0 3 except ZeroDivisionError: #要是爆发“除以0错误” 4 print("You can‘t divide by zero!")#打印你不能除以0
使用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()
接受两个实参:要存储的数据以及可用于存储数据的文件对象。
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)
下面将存取数据和异常结合一下程序运行时,从文件获取用户名,若文件不存在,则提示输入用户名并存储:
1 import json 2 # 如果以前存储了用户名就加载它 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 ")
萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常
标签:写文件 ack mes article detail open() dump 定义 用户
原文地址:https://www.cnblogs.com/romannista/p/10336510.html