10_python_文件和異常


日期:2017-12-30 作者:秋的懵懂



注意:這里需要自行創(chuàng)建一些用于測試的txt文件饼丘。



# coding = utf-8

# ***********************************************************
# @file     python_10_file_traceback.py
# @brief    文件和異常
# @author   魏文應(yīng)
# @date     2017-12-28
# ***********************************************************
# @attention
#   這里需要自行創(chuàng)建文件函匕,文件應(yīng)該在代碼工作區(qū),其中包含:
#   text_files\pi_digits.txt
#   text_files\programing.txt
#   text_files\All_But_Lost.txt
#   numbers.json
# ***********************************************************


# ---------------------------------------------------------
# 打開一個txt文件并顯示
print('\n\n')
print('_______________________________________________')
print("打開一個txt文件并顯示:")

# with 關(guān)鍵字會自動關(guān)閉文件
with open('pi_digits.txt') as file_object:
    contents = file_object.read()
    print(contents)
    
with open("text_files\pi_digits.txt") as file_object:
    contents = file_object.read()
    print(contents)

filename = "text_files\pi_digits.txt"
with open(filename) as file_object:
    for line in file_object:
        print(line)

# rstrip()函數(shù)去除字符串末尾的空白
filename = 'text_files\pi_digits.txt'
with open(filename) as file_object:
    for line in file_object:
        print(line.rstrip())
    
# 使用關(guān)鍵字with 時,open()返回的
# 文件對象只在with 代碼塊內(nèi)可用
filename = 'text_files\pi_digits.txt'
with open(filename) as file_object:
    # readlines()整行讀取推穷,存于列表
    lines = file_object.readlines()
# with外部使用  
for line in lines:
    print(line.rstrip())

#   
filename = 'text_files\pi_digits.txt'
with open(filename) as file_object:
    lines = file_object.readlines()
# 定義一個字符變量
pi_string = ''  
for line in lines:
    pi_string += line.strip()

birthday = input('Enter your birthday, in the from mmddyy:')
if birthday in pi_string:
    print('Your birthday appears in the pi.' )
else:
    print('Does not appears.')

    
print('_______________________________________________')
# ---------------------------------------------------------



# ---------------------------------------------------------
# 寫入文件
print('\n\n')
print('_______________________________________________')
print("寫入文件:")

# 讀取模式:'r' 默認(rèn)就是這個模式
# 寫入模式:'w' 重寫绑青,原來的內(nèi)容會被清除
# 附加模式:'a' 后面添加內(nèi)容,原來的內(nèi)容還在
# 讀寫模式:'r+' 
filename = 'text_files\programing.txt'
with open(filename, 'w') as file_object:
    file_object.write('I love programing!\n')
    file_object.write('I love creating new games!\n')

with open(filename, 'a') as file_object:
    file_object.write('I also love finding meaning' + 
                      ' in large datasets.\n')
    file_object.write('I love creating apps that can' + 
                      'run in a browser.\n')

with open(filename, 'r') as file_object:
    for line in file_object.readlines():
        print(line.rstrip())
    
print('_______________________________________________')
# ---------------------------------------------------------



# ---------------------------------------------------------
# 異常處理
print('\n\n')
print('_______________________________________________')
print("異常處理:")

# 處理除零異常
try:
    print(5 / 0)
except ZeroDivisionError:
    print("You can't divide by zero!")

# 簡單計算器
print('Give me two number, and I will divide them.')
print("Enter 'q' to quit.")

while True:
    first_number = input('\nInput first number:')
    if first_number == 'q':
        break
    second_number = input('\nInput second number:')
    if second_number == 'q':
        break
    # try-except-else try成功執(zhí)行跪腹,則執(zhí)行else
    try:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        print('You can divide by 0!')
    else:
        print(answer)


# 文件不存在異常處理
file_name = 'alice.txt'
try:
    with open(file_name) as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    message = "\nSorry, the file " + file_name + \
              " dose not exist"
    print(message)

# 分析文本
file_name = 'text_files\All_But_Lost.txt'
try:
    with open(file_name) as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    message = "\nSorry, the file " + file_name + \
              " dose not exist"
    print(message)
else:
    # split()生成列表,元素為所有文本單詞
    words = contents.split()
    num_words = len(words)
    print('\nThe file ' + file_name + ' has about ' + 
           str(num_words) + ' words.')
    
print('_______________________________________________')
# ---------------------------------------------------------




# ---------------------------------------------------------
# pass關(guān)鍵字(讓python此時什么都不做)
print('\n\n')
print('_______________________________________________')
print("pass關(guān)鍵字(讓python此時什么都不做):")

def count_words(file_name):
    try:
        with open(file_name) as f_obj:
            contents = f_obj.read()
    except FileNotFoundError:
        # python 什么也沒有做
        pass
    else:
        # split()生成列表飞醉,元素為所有文本單詞
        words = contents.split()
        num_words = len(words)
        print('\nThe file ' + file_name + ' has about ' + 
               str(num_words) + ' words.')
    
file_names = ['text_files\All_But_Lost.txt',
              'text_files\pi_digits.txt',
              'text_files\programing.txt',
              'none.txt',]
              
for file_name in file_names:
    count_words(file_name)
    
print('_______________________________________________')
# ---------------------------------------------------------





# ---------------------------------------------------------
# json存儲數(shù)據(jù)
print('\n\n')
print('_______________________________________________')
print("json存儲數(shù)據(jù):")

import json

numbers = [1, 3, 2, 4, 6, 9]

file_name = 'numbers.json'
with open(file_name, 'w') as f_obj:
    # 寫入
    json.dump(numbers, f_obj)
    
with open(file_name) as f_obj:
    # 讀取
    read_numbers = json.load(f_obj)
    
print(read_numbers)

# 寫入
user_name = input('What is your name?')
with open(file_name, 'w') as file_object:
    json.dump(user_name, file_object)
    print('We will remenber you when you come back, ' 
          + user_name + '!')
# 讀取
with open(file_name) as file_object:
    user_name = json.load(file_object)
    print('Welcome back ' + user_name + '!')

print('_______________________________________________')
# ---------------------------------------------------------


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冲茸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缅帘,更是在濱河造成了極大的恐慌轴术,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钦无,死亡現(xiàn)場離奇詭異逗栽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)失暂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門彼宠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弟塞,你說我怎么就攤上這事凭峡。” “怎么了决记?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵摧冀,是天一觀的道長。 經(jīng)常有香客問我系宫,道長索昂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任扩借,我火速辦了婚禮椒惨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘往枷。我一直安慰自己框产,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布错洁。 她就那樣靜靜地躺著秉宿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屯碴。 梳的紋絲不亂的頭發(fā)上描睦,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音导而,去河邊找鬼忱叭。 笑死隔崎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的韵丑。 我是一名探鬼主播爵卒,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撵彻!你這毒婦竟也來了钓株?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陌僵,失蹤者是張志新(化名)和其女友劉穎轴合,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碗短,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡受葛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了偎谁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片总滩。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖巡雨,靈堂內(nèi)的尸體忽然破棺而出咳秉,到底是詐尸還是另有隱情,我是刑警寧澤鸯隅,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站向挖,受9級特大地震影響蝌以,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜何之,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一跟畅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溶推,春花似錦徊件、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辐赞,卻和暖如春部翘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背响委。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工新思, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留窖梁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓夹囚,卻偏偏與公主長得像纵刘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子荸哟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理假哎,服務(wù)發(fā)現(xiàn),斷路器敲茄,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程位谋,因...
    小菜c閱讀 6,424評論 0 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • 今晚的手工課需要準(zhǔn)備如下的工具:粘土、剪刀堰燎、三根牙簽掏父、做粘土的工具刀和棒。 老師示范: 故事主角做出來了秆剪,小朋友們...
    智悲德育閱讀 372評論 0 0
  • 我享受一個人的出游赊淑,除了吃飯的時候。 受限于胃口仅讽,也可能是開銷陶缺,一般當(dāng)?shù)卮蠓莸奶厣耸铰鋯蔚娜硕紵o緣品嘗。即便是下...
    Call_me_競哥哥閱讀 933評論 5 12