python從入門到實踐-10章文件和異常(括號問題)
#!/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()

浙公網安備 33010602011771號