博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习3月8号【python编程 从入门到实践】---》笔记(1)
阅读量:4971 次
发布时间:2019-06-12

本文共 5146 字,大约阅读时间需要 17 分钟。

第十章:处理文件和异常
#学习处理文件,让程序能够快速地分析大量的数据 #学习错误处理,避免程序在面对意外情形时崩溃 #学习异常,是python创建的特殊对象,用于管理程序运行时出现 #学习模块json,它让你能够保存用户数据,以免在程序停止运行后丢失
10.1 从文件中读取数据 #10.1.1 读取整个文件 #10.1.3 逐行读取
##调用For循环 # filename= 'pi_digits.txt' # with open (filename) as file_object:#使用了关键字with,让python负责妥善地打开和关闭文件。 #     for line in file_object:#为查看文件的内容,我们通过对文件对象执行循环来遍历文件中的每一行 #         print(line.rstrip())
#10.1.4 创建一个包含文件各行内容的列表
# filename = 'pi_digits.txt' # with open(filename) as file_object: #     lines = file_object.readlines() # for line in lines: #     print(line.rstrip())
 
#10.2.1写入空文件
 
filename = 'programming.txt' with open (filename,"w") as file_object:     file_object.write(" I love programming.") #10.2.3附加到文件 #以‘a'的附加模式打开,写入到文件的行都将添加到文件末尾
filename = 'programming.txt' with open (filename,"a") as file_object:     file_object.write("  also love finding meaning in large datasets.\n")     file_object.write(" i love creating apps that can run in a browser.\n")
 
#10.3 异常
#10.3.1 处理ZeroDivisionError异常 # try: #     print(5/0) # except ZeroDivisionError: #     print(" You can't divide by zero ")
10.3.3 使用异常避免崩溃
#try-except-else代码块的工作原理大致如下: #处理FileNotFoundError 异常 #可以使用try-except 代码块以直观的方式进行处理。 filename= 'alice.txt' try:     with open(filename) as f_obj:## 会由几率发生异常的运行         contens = f_obj.read()##将read()得到的内容放进contens里面 except FileNotFoundError:#如果发生FileNotFoundError异常就执行一下行代码     msg="Sorry , the file " + filename + " does not exist."     print(msg)##输出一个提醒代码
10.3.4 else代码块
#try-except-else代码块的工作原理大致如下:
print("Give me two numbers , and i'll divide them .") print("Enter 'q' to quit .") while True:     first_number=input("\nFirst number: ")     if first_number=='q':         break     second_number=input("\nSecond number: ")     try:                                        ###### try-except-else代码块的工作原理,python尝试执行try代码块中的代码;
answer = int(first_number) / int(second_number)###有可能发生异常的一行代码     except ZeroDivisionError:            #except代码块告诉python,出现ZeroDivisionError异常时该怎么办,下一行就是异常后执行的代码块。
print("You can't divide by 0!")     else:                       ####只有可能引发异常的代码才需要放在try语句中;有一些仅在try代码块成功执行时才需要运行的代码,并且放在else语句里面
print(answer)
10.3.6分析文本 #以空格为分隔符将字符串将字符串分拆成多个部分,并将这些部分都存储到一个列表中 # title = "Alice in Wonderland " # a=title.split()#它时根据一个字符串创建一个单词列表。 # print(a) 10.3.7 使用多个文件
def count_words(filename): "计算一个文件大致有多少个单词"     try:         with open (filname) as f_obj:             contents= f_obj.read()     except FileExistsError:     # 如果想在失败时候一声不吭,可以在except代码块中明确什么都不做,可以写入pass代码         msg="Sorry , the file" + filename + " does not exist."         print(msg)     else: #计算文件大致包含多少个单词         words= contents.split()#尝试计算它包含多少个单词,原理:根据一个字符串创建一个单词列表。         num_words = len(words)         print("The  file "  +  filename + "has about" + str(num_words) + "words") filename = ['alice.text','siddhartha.txt','moby_dick.txt'] for filename in filenames:   count_words(filename)
在以上代码可知,使用try-except代码块提供了两个重要的优点:避免让用户看到traceback;让程序能够分析能够找到的其他文件。 10.4存储数据 #模块json让你能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。 #json  格式最初是为(JavaScriptObject Notation) 格式最初是为Javascript开发。
 
 
import json numbers=[2,3,4,56,15] filename = 'number.json'   ##使用文件扩展名。json来指出文件存储的数据为JSON格式。 with open(filename,'w')as f_obj:     json.dump(numbers,f_obj)      ##函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。
print(numbers)
两个使用了两个不同函数,一个是load一个dump 。
import json filename = 'number.json' with open(filename) as f_obj:     numbers=json.load(f_obj)      ##我们使用函数json.load()加载存储在numbers.json中的信息,并将其存储到变量numbers中。 print(numbers)
 
import json def get_stored_username():  ##如果存储了用户名,就获取它     filename = 'username.json'     try:         with open(filename) as f_obj:             username = json.load(f_obj)     except FileNotFoundError:         return None     else:         return username def greet_user():  #问候用户,并指出其名字     username= get_stored_username()     if username:         print("Welcome back,"  +  username + "!")     else:         username = input("What is your name ?")         filename ='username.json'         with open(filename,'w')as f_obj:             json.dump(username,f_obj)             print("We'll remember you when you come back,"  + username + "!") greet_user()
10.4.3重构 这个是remember_me.py的这个最终版本中,每个函数都执行单一而清晰的任务。我们调用greet_user(),他打印一条合适的消息 ###要么欢迎老用户回来,要么问候新用户 首先 调用 get_stored_username() ,这个函数只负责获取存储的用户名(如果存储了的话),再在必要时调用get_stored-username(),这个函数只负责获取并存储新用户的用户名。 这种划分必不可少!!!!
import json def get_stored_username():  ##如果存储了用户名,就获取它     filename = 'username.json'     try:         with open(filename) as f_obj:             username = json.load(f_obj)     except FileNotFoundError:         return None     else:         return username def get_new_username():  #提示用户输入用户名     uesrname1=input("What is your name?")     filename='username1.json'     with open(filename,'w')as f_obj:         json.dump(username,f_obj)     return username def greet_user(): #问候用户,并指出其名字     username= get_stored_username()     if username:         print("Welcome back,"  +  username + "!")     else:         username=get_new_username()         print("We'll remember you when you come back,"  + username + "!") greet_user()
 

转载于:https://www.cnblogs.com/jackson669/p/10503895.html

你可能感兴趣的文章
存储设备形成的层次结构
查看>>
源码阅读 - java.util.concurrent (三)ConcurrentHashMap
查看>>
Daily Scrum 10.30
查看>>
SQL语言之概述(一)
查看>>
数据库表 copy
查看>>
LinkedList源码解析
查看>>
SignalR循序渐进(一)简单的聊天程序
查看>>
MyServer
查看>>
Learning Cocos2d-x for XNA(2)——深入剖析Hello World
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
Http协议
查看>>
手机端web开发必备代码
查看>>
[SDOI2008]洞穴勘测
查看>>
NOI2014 购票
查看>>
Difference between Linearizability and Serializability
查看>>
电影《绿皮书》
查看>>
IDEA使用操作文档
查看>>
如何对网课、游戏直播等进行录屏
查看>>
UIView
查看>>
有关去掉谷歌及火狐浏览器文本框 数字类型 上下箭头的方法
查看>>