DAY 130 2017.10.11
10.4.1 使用json.dump()和json.load()
使用json.dump()來編寫一個存儲一組數字的簡短程序,再使用json.load()編寫一個將這些數字讀取到內存中的程序蠢莺。
函數json.dump()接受兩個實參:要存儲的數據以及可用于存儲數據的文件對象于样。
DAY 131 2017.10.12
10.4.2 保存和讀取用戶生成的數據
對于用戶生成的數據,使用json保存它們大有裨益趟畏,因為如果不以某種方式進行存儲靶橱,等程序停止運行時用戶的信息將丟失臊旭。例子:用戶首次運行程序時被提示輸入自己的名字狸页,這樣再次運行程序時就記住他了。
存儲用戶的名字:
向名字被存儲的用戶發(fā)出問候:
DAY 132 2017.10.13
我們需要合并上面的兩個程序扯再。這個程序運行時芍耘,我們將從文件username.json中獲取用戶名,因此我們首先編寫一個嘗試恢復用戶名的try代碼塊熄阻。如果這個文件不存在斋竞,我們就在except代碼塊中提示輸入用戶名,并將其存儲在username.json中秃殉,以便程序再次運行時能夠獲取它坝初。
DAY 133 2017.10.14
10.4.3 重構
將代碼分為一系列完成具體工作的函數,這樣的過程被稱為重構钾军。重構讓代碼更清晰鳄袍、更易于理解、更容易擴展吏恭。
# Hello World program in Python
# --coding: utf-8 --
import json
def get_stored_username():
filename='username.json'
try:
with open(filename) as f:
username=json.load(f)
except FileNotFoundError:
return None
else:
return username
def greet_user():
username=get_stored_username()
if username:
print("Welcome back, "+username+" !")
else:
username=raw_input("What's your name?")
filename='username.json'
with open(filename,'w') as f:
json.dump(username,f)
print("We will remember you when you come back, "+username+" !")
greet_user()
DAY 135 2017.10.15
DAY 136 2017.10.16
# Hello World program in Python
# --coding: utf-8 --
import json
def get_stored_username():
"""如果存儲了用戶名拗小,就獲取它"""
filename='username.json'
try:
with open(filename) as f:
username=json.load(f)
except IOError:
return None
else:
return username
def get_new_username():
username=raw_input("What's your name?")
filename='username.json'
with open(filename,'w') as f:
json.dump(username,f)
return username
def greet_user():
"""問候用戶名,并指出其名字"""
username=get_stored_username()
if username:
print("Welcome back, "+username+" !")
else:
username=get_new_username()
print("We will remember you when you come back, "+username+" !")
greet_user()
DAY 137 2017.10.17
學習使用Markdown
獻給寫作者的 Markdown 新手指南
在群里看到戰(zhàn)友推薦使用Markdown編輯文本樱哼,本來犯懶不想動哀九,看到大家都開始使用剿配,打起精神來把原先編輯好的文章重新又用Markdown編輯了一下,果然清晰多了阅束,大贊呼胚!戰(zhàn)友們的學習態(tài)度給了自己很大的動力!
DAY 138-139 2017.10.18--2017.10.19
安裝Python和Pycharm
Pycharm及python安裝詳細教程
python下載地址:https://www.python.org/downloads/
pycharm下載地址:http://www.jetbrains.com/pycharm/download/#section=windows
DAY 140 2017.10.20
10.1 從文件中讀取數據
"文本文件可存儲的數據量多得難以置信:天氣數據息裸、交通數據蝇更、社會經濟數據、文學作品等界牡。每當需要分析或修改存儲在文件中的信息時,讀取文件都很有用,對數據分析應用
程序來說尤其如此簿寂。例如,你可以編寫一個這樣的程序:讀取一個文本文件的內容,重新設置這些數據的格式并將其寫入文件,讓瀏覽器能夠顯示這些內容。
要使用文本文件中的信息,首先需要將信息讀取到內存中宿亡。為此,你可以一次性讀取文件的全部內容,也可以以每次一行的方式逐步讀取"
簡要說常遂,數據很重要,存儲很重要挽荠,讀取使用全靠文件操作.
在這個程序中,第1行代碼做了大量的工作克胳。我們先來看看函數open() 。要以任何方式使用文件——哪怕僅僅是打印其內容,都得先打開 文件,這樣才能訪問它圈匆。函數open() 接受一個參數:要打開的文件的名稱漠另。Python在當前執(zhí)行的文件所在的目錄中查找指定的文件。在這個示例中,當前運行的是file_reader.py,因此Python在file_reader.py所在的目錄中 查找pi_digits.txt跃赚。函數open() 返回一個表示文件的對象笆搓。在這里,open('pi_digits.txt') 返回一個表示文件pi_digits.txt 的對象;Python將這個對象存儲在我們將 在后面使用的變量中。
關鍵字with 在不再需要訪問文件后將其關閉纬傲。
在這個程序中,注意到我們調用了open() ,但沒有調用close() ;你也可以調用open() 和close() 來打開和關閉文件,但 這樣做時,如果程序存在bug,導致close() 語句未執(zhí)行,文件將不會關閉满败。這看似微不足道,但未妥善地關閉文件可能會導致數據丟失或受損。如果在程序中過早地調 用close() ,你會發(fā)現需要使用文件時它已關閉 (無法訪問),這會導致更多的錯誤叹括。并非在任何情況下都能輕松確定關閉文件的恰當時機,但通過使用前面所示的結構,可 讓Python去確定:你只管打開文件,并在需要時使用它,Python自會在合適的時候自動將其關閉算墨。
DAY 141 2017.10.21
課后作業(yè)10-11:喜歡的數字
編寫一個程序,提示用戶輸入他喜歡的數字汁雷,并使用 json.dump()將這個數字存儲到文件中净嘀。再編寫一個程序,從文件中讀取這個值侠讯,并打 印消息“I know your favorite number! It’s _.”挖藏。
課后作業(yè)10-12 記住喜歡的數字
將練習 10-11 中的兩個程序合而為一。如果存儲了用戶喜 歡的數字厢漩,就向用戶顯示它熬苍,否則提示用戶輸入他喜歡的數字并將其存儲到文件中。運 行這個程序兩次,看看它是否像預期的那樣工作柴底。
# Hello World program in Python
# --coding: utf-8 --
import json
string="please enter your favorite number: "
Number=input(string.title())
filename='Favorite_number.json'
with open(filename,'w') as f_obj:
json.dump(int(Number),f_obj)
with open(filename) as f_obj:
User_number=json.load(f_obj)
print("I know your favorite number is "+str(User_number))
DAY 142 2017.10.22
10.1.2 文件路徑
當你將類似pi_digits.txt這樣的簡單文件名傳遞給函數open() 時,Python將在當前執(zhí)行的文件(即.py程序文件)所在的目錄中查找文件婿脸。
根據你組織文件的方式,有時可能要打開不在程序文件所屬目錄中的文件。例如,你可能將程序文件存儲在了文件夾python_work中,而在文件夾python_work中,有一個名為 text_files的文件夾,用于存儲程序文件操作的文本文件柄驻。雖然文件夾text_files包含在文件夾python_work中,但僅向open() 傳遞位于該文件夾中的文件的名稱也不可行,因為Python 只在文件夾python_work中查找,而不會在其子文件夾text_files中查找狐树。要讓Python打開不與程序文件位于同一個目錄中的文件,需要提供文件路徑 ,它讓Python到系統(tǒng)的特定位置 去查找。
由于文件夾text_files位于文件夾python_work中,因此可使用相對文件路 徑來打開該文件夾中的文件鸿脓。相對文件路徑讓Python到指定的位置去查找,而該位置是相對于當前運行的程 序所在目錄的
file_path = './main.py'
with open(file_path) as file_object:
print file_object.read()
DAY 143-144 2017.10.23--2017.10.24
課后作業(yè)10-13 驗證用戶:最后一個 remember_me.py 版本
假設用戶要么已輸入其用戶名抑钟,要么是首次運行該程序。我們應修改這個程序野哭,以應對這樣的情形:當前和最后一次運行 該程序的用戶并非同一個人在塔。 為此,在 greet_user()中打印歡迎用戶回來的消息前拨黔,先詢問他用戶名是否是對的蛔溃。 如果不對,就調用 get_new_username()讓用戶輸入正確的用戶名篱蝇。
# Hello World program in Python
# --coding: utf-8 --
import json
message='no message!'
def new_user():
NameJudge=raw_input('Please Enter Your Name :')
filename=NameJudge+'.json'
with open(filename,'w') as f_obj:
json.dump(NameJudge,f_obj)
def greet_user():
NameJudge=raw_input('Please Enter Your Load Name :')
filename=NameJudge+'.json'
try:
with open(filename) as f_obj:
User=json.load(f_obj)
except FileNotFoundError:
print(message)
else:
print('Welcome home, '+User)
judgment=raw_input("Do you have the Accounts ? Y/N\n")
if judgment.title()=='Y':
greet_user()
if judgment.title()=='N':
new_user()
DAY 145—146 2017.10.25—2017.10.26
在外旅游贺待,偷懶中...
json模塊使用總結——Python
DAY 147 2017.10.27
10.1.3 逐行讀取-黑客讀取服務器密碼文件例子
使用關鍵字with 時,open() 返回的文件對象只在with 代碼塊內可用。如果要在with 代碼塊外訪問文件的內容,可在with 代碼塊內將文件的各行存儲在一個列表中,并
在with 代碼塊外使用該列表:你可以立即處理文件的各個部分,也可推遲到程序后面再處理零截。 下面的示例在with 代碼塊中將文件pi_digits.txt的各行存儲在一個列表中,再在with 代碼塊外打印它們:
filename = '/etc/passwd'
with open(filename) as file_object:
for line in file_object:
print(line)