#!/user/bin/env python
# -*- coding:utf-8 -*-

# 1.从文件中读取数据
with open('pi_digits.txt') as file_object:
contents = file_object.read()
# print(contents)
# 末尾会多一行空行,read()到文件末尾时会返回一个空字符,rstrip()删除末尾空白
print(contents.rstrip()) # [有点问题]

# 文件打开可以使用绝对路径和文件名

# 可以使用分开的方式
# filename = 'pi_digits.txt'
# open(filename)

# 使用关键字with时,open()返回的文件对象只在with代码块内部可用。可以不用关闭文件close()
# 要with外的代码块使用,将with代码类文各行储存在一个列表中
# readlines()

# 注意:文件读取的时侯,python将所有文本文件都解读为字符串。需要数字必须转化int() float()

# 2.写入文件
# 注意;写入只能是文本文件,存数字需要转化 str()
file_name = 'programming.txt'
with open(file_name,'w') as file_object:
file_object.write("I love programming.\n") # 换行符也是必须的,python不会自动换行
file_object.write("I love programming.")
# 附件到文件:打开方式 a
# r+ w+ a+ 一般不推荐使用

# 3.异常 try except else (else 执行必须是try执行成功)
try:
print(5/0)
except ZeroDivisionError:
print("you can't divide by zero")

# 使用异常处理避免崩溃
# else代码块

# print("Give me tow numbers, I'll divide them.")
# print("Enter 'q' to quit")
# while True:
# frist = input("\nFrist number:")
# if frist == 'q':
# break
# second = input("Second number:")
# try:
# answer = int(frist) / int(second)
# except ZeroDivisionError:
# print("you can't divide by zero")
# else:
# print(answer)
# 处理文件不存在异常也是一样;try 必须放在open的前面,一位一样是由open引起的
# 分析文本使用.split()方法,将字符串拆分为多个字符

# 打开多个文件 候将这些文件名保存到列表中for循环打开
# pass语句 错误分析时什么都不做

# 4.存储数据 json
# json 数据非python专用,可以与其他编程语言共享
# 存:json.dump() 读:json.load()

# import json
# numbers = [2,3,5,6,7,11]
# filename = 'numbers.json'
# with open('number.json','w') as f_obj:
# json.dump(numbers,f_obj) # 注意格式 前面写入的文件 后面是被改写

# 【json.load有点问题】

# import json
# filename = 'number.json'
# filename.strip()
# with open(filename) as flie:
# number = json.load(flie)
# print(number)

# 可以动态的存入文件

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():
# 提示用户输入用户名
username = input("What your name?")
filename = 'username.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 bake, " + username + "!")

greet_user()

python从入门到实践-10章文件和异常(括号问题)的更多相关文章

  1. Python:从入门到实践--第十章--文件和异常--练习

    #.python学习笔记:在文本编辑器中新创建一个文件,写几句话老总结你至此学到的python知识 #其中‘In Python you can’ 打头.将这个文件命名为learning_python. ...

  2. 【Python编程:从入门到实践】chapter10 文件和异常

    chapter10 文件和异常 10.1 从文件中读取数据 10.1.1 读取整个文件 with open("pi.txt") as file_object: contents = ...

  3. Python:从入门到实践--第九章-类--练习

    #.餐馆:创建一个名为Restaurant的类,其方法_init_()设置两个属性:restaurant_name和cuisine_type. #创建一个名为describe_restaurant的方 ...

  4. 读书笔记「Python编程:从入门到实践」_10.文件和异常

    10.1 从文件中读取数据  10.1.1 读取整个文件 with open(~) as object: contents=object.read() with open('C:/Users/jou/ ...

  5. python从入门到实践 第二章

    python变量赋值: python的变量赋值 可以是单引号 也可以是双引号python 变量赋值的时候不能加()的 比如 name = "My Name is GF"变量赋值的时 ...

  6. python从入门到实践-9章类

    #!/user/bin/env python# -*- coding:utf-8 -*- # 类名采用的是驼峰命名法,即将类名中每个单词的首字母大写,而不使用下划线.# 对于每个类,都应紧跟在类定义后 ...

  7. python从入门到实践-8章函数

    #!/user/bin/env python# -*- coding:utf-8 -*- # 给形参指定默认值时,等号两边不要有空格 def function_name("parameter ...

  8. python从入门到实践-6章字典

    #!/user/bin/env python# -*- coding:utf-8 -*- # 前面不用空格,后面空格# 访问只能通过keyalien_0 = {'color': 'green', 'p ...

  9. python从入门到实践-11章测试模块(测试函数出问题)

    #!/user/bin/env python# -*- coding:utf-8 -*- # 用python中unittes中工具来测试代码 # 1.测试函数import unittestfrom n ...

随机推荐

  1. [Linux]不可重入函数

    一.概述 怎么会有可重入和不可重入. 在多任务系统下,中断可能在任务执行的任何时间发生:如果一个函数的执行期间被中断后,到重新恢复到断点进行执行的过程中,函数所依赖的环境没有发生改变,那么这个函数就是 ...

  2. 一丶HTML介绍

    import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('local ...

  3. nginx 配置访问 静态文件

    server { listen       7777; server_name  crpapitest.shunshunliuxue.com; index index.html index.htm i ...

  4. jq实现多选反选

    <script type="text/javascript">    $('input [name="ckball"]').click(functi ...

  5. 腾讯工蜂Git关联Jenkins Hooks

    现在国内外Git平台非常多,最近维护的腾讯工蜂免费公网版本git.code.tencent.com,免注册(建议使用微信登录,舒服)即可使用私有仓库.对小型团队体验还不错,如果要关联Jenkins进行 ...

  6. HTTP/1.1 chunked 解码

    0.简介 1.定义 RFC定义 https://tools.ietf.org/html/rfc2616#section-3.6.1 Chunked-Body = *chunk last-chunk t ...

  7. 微服务框架——SpringCloud(四)

    1.Spring Cloud Config 分布式配置 a.Config服务器 ①新建springboot项目,依赖选择Config Server ②pom文件关键依赖 <parent> ...

  8. 运行报错:java.io.IOException: invalid constant type: 15

    jdk,tomcat更新到jdk1.8与 tomcat8 运行报错:java.io.IOException: invalid constant type: 15 pom.xml文件中更新javassi ...

  9. 首次安装Ubuntu

    初试Ubuntu 双系统的安装 situation: dell(2017购) 固态250G+机械硬盘500G 已经安装windows 10 BIOS 为 UEFI rufus(向U盘写入镜像) Ubu ...

  10. Bphero-UWB 基站0 和 电脑串口数据格式定义

    基站0 通过串口将系统中测得的距离信息发送到电脑,电脑定位软件通过三边定位算法计算出TAG的坐标,基站0 和 定位软件之间的数据格式定义如下(对官方数据结构进行了简化) 更多UWB定位信息请参阅论坛b ...