#!/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. String,下表和切片,分割

    字符串介绍 1.字符串在内存中的存储 2.字符串的加法 3.字符串的格式化 1. 下标索引 所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间 字符串中" ...

  2. 基于spark-streaming实时推荐系统

    基于spark-streaming实时推荐系统(一) 基于spark-streaming实时推荐系统( 二) 基于spark-streaming实时推荐系统(三)

  3. OpenGL编程指南(第九版) Tiangles 学习笔记

    ////////////////////////////////////////////////////////////////////////////// // // Triangles.cpp / ...

  4. selenium对百度进行登录注销

    #百度登录退出demo import time from selenium import webdriver from selenium.webdriver.common.action_chains ...

  5. python3 迭代器(Iterator)和生成器(generator)

    一.迭代器定义: 迭代是访问集合元素的一种方式,迭代器是一个可以记住遍历位置的对象: 集合数据类型如list.dict.str等是Iterable但不是Iterator,不过可以通过iter()函数获 ...

  6. [原创]Cadence Allegro16.6安装

    选择Cancel. lisence managner安装完成,然后安装Product installation Cadence OrCad Allegro SPB 16.6 完整版+和谐文件 链接:h ...

  7. js实现放大效果

    <!doctype html><html> <head> <meta charset="UTF-8"> <title>放 ...

  8. js数组删除元素、json删除元素

    //数组var b=[1,2,3,4]; b.splice(b.indexOf(2,1)) //1,3,4 //json var arrayId=[{"id":233," ...

  9. python文件的路径问题补充上一篇内容

    上次的路径问题还没解决就被勒索病毒的木马器给搞了两周多, 拖拖拖到现在又开始纠结路径问题...还是学习能力不足啊... 补充一下路径问题的知识, 毕竟jupyter notebook跟IDE测试的时候 ...

  10. 什么是HTTP及RFC

      HTTP:超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议. 所有的www文件都必须遵守这个标准.设计HTTP最初的目的是为了提供发布 ...