#!/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. Mysql 多实例 +表损坏

    什么是实例? 进程+多个线程+预分配的内存结构 MySQL多实例: 多个进程+多个线程+多个预分配内存结构 多个配置文件: 1)多个端口 2)多个数据目录 3)多个socket文件 ./mysql_i ...

  2. ebe

    ebe1 Email:kefu007@vip.qq.com 89600 VSA 软件解调和矢量信号分析的综合工具 Aspen Plus大型通用流程模拟系统 AutoAdvance Baccarat-P ...

  3. USACO15DEC最大流MaxFlow

    传送门 这是个假的最大流,其实是一个用树剖+线段树就能解决的事情 题目中的道路会对路径上的造成压力,最后询问最大的压力 其实就等价于对每条路径上的点加上 1 的权值,并且最后询问整个树中的最大值 然后 ...

  4. 启动Eclipse发生错误:An internal error occurred during: "Initializing Java Tooling".

    问题描述   由于上一次关闭 Eclipse 时没有正常关闭,再次启动 Eclipse 时报错:An internal error occurred during: "Initializin ...

  5. spring boot正常启动但是访问会找不到“ localhost 的网页”的错误

    最近启动springboot项目访问localhost老报找不到网页,找了很久发现yml配置文件中配置了“context.path”,只要在端口号后面加上context.path地址就可以访问了. 如 ...

  6. jQuery的deferred对象解析

    参考: jQuery的deferred对象详解:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_defe ...

  7. java文件过滤器的使用

    前言: java.io.FileFilter(过滤器接口)boolean accept(File pathname) File类提供了如下方法使用过滤器:public File[] listFiles ...

  8. vs2017更新出错:The entire Box execution exiting with result code: 0x0

    在将vs2017 15.7.4更新至15.9.5出现“The entire Box execution exiting with result code: 0x0”错误,也就是文件解压下载开始安装后, ...

  9. MBR分区操作-增加、扩展、删除

    MBR分区操作-增加.扩展.删除 GPT分区参考 http://www.blogjava.net/haha1903/archive/2011/12/21/366942.html l  fdisk 显示 ...

  10. log4j警告:WARN Please initialize the log4j system properly 的解决方法

    出现这个问题的原因则是因为没有为log4j建立配置文件导致的.所以解决问题的方法很简单,只要在 src文件目录下建立配置文件即可: 右键点击src  -> New  ->  File 文件 ...