1.文件的輸入輸出
open(file,[option])
r 只讀模式,文件不存在時會報錯。
w 寫入模式,文件存在會清空之前的內容,文件不存在則會新建文件。
x 寫入模式,文件存在會報錯,文件不存在則會新建文件。
a 追加寫入模式,不清空之前的文件,直接將寫入的內容添加到後面。
b 以二進制模式讀寫文件,wb,rb,ab。
+ 可讀寫模式,r+,w+,x+,a+,這幾種模式還遵循了r,w,x,a的基本原則。
f=open("test.txt","r")
f=open("test.txt","w")
f=open("test.txt","x")
f=open(r"E:\learn\test.txt","w")
f=open("E:\\learn\\test.txt","w")
'''
#內容
aaabbb
人生苦短,我用Python
#編碼
f=open("test.txt","r+") #加上+號,可以讀的權限
f.read() #Python讀文件,讀完需要重置光標或者重新打開一次文件
'''
f.read(size)
'''size是可選的數值,指定字符串長度,如果沒有指定size或者指定爲負數,就會讀取並返回整個文件。當文件大小爲當前機器內存兩倍時就會產生問題,反之就儘可能大的size讀取和返回數據,如果到了文件末尾,會返回空字符串。
'''
>>> f.read(2)
'aa'
f.readline()
'''字符串結尾會自動加上一個換行符\n,只有當文件最後沒有以換行符結尾時,這一操作纔會被忽略,這樣返回值就不會有混淆。如果返回空字符串,表示到達率文件末尾,如果是空行,就會描述爲\n,一個只有換行符的字符串。
'''
>>> f.readline()
'aaabbb\n'
>>> f.readline()
'人生苦短,我用Python'
f.readlines()
'''可以通過列表索引的方式將文件的每一行的內容輸出。
可以通過for循環迭代輸出每一行的信息。'''
>>> f.readlines()
['aaabbb\n', '人生苦短,我用Python']
f.write()
'''
>>> f=open("test.txt","w+")
>>> f.write("test")
4
>>> f.flush()
'''
f.writelines()
'''
>>> f=open("test.txt","w+")
>>> li=["life","is","short",",you","need","python"]
>>> f.writelines(li)
>>> f.flush()
>>> f.read()
''
>>> f.seek(0)
0
>>> f.read()
'lifeisshort,youneedpython'
'''
f.flush()
f.close()
f.tell()
>>> f.tell()
28
f.seek(offset,from)
>>> f.seek(0)
0
>>> f.seek(0,0)
0
closed
>>> f.closed
False
mode
>>> f.mode
'w+'
name
>>> f.name
'test.txt'
encoding
>>> f.encoding
'cp936'
with open('文件名') as f:
f.read()
'''
#擴展操作
>>> with open("test.txt","w+") as f:
f.write("哈哈") #無需flush,自動關閉IO
2
'''
2.異常語法
try:
suite1
except exception1:
suite2
except (exception2,exception3):
suite3
except exception4 as reason:
suite4
except:
suite5
else:
suite5
finally:
suit6
'''
注意:中間的except,else,finally都是可選的,但至少有一個,不然try就沒有意義了,根據實際中的需求來選擇。
所有錯誤類型都繼承自BaseException
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
'''
'''
#coding:
try:
b%d
##except NameError:#參數未定義
##except TypeError:#類型錯誤
except Exception:#異常基類,捕捉所有的異常
print("報錯了")
else:#代碼沒有報錯會執行
print("沒有錯誤")
finally:#不管報不報錯,都會執行
print("不管你報不報錯,我都要執行")
a=1
'''
try:
fun()
except Exception as e:
raise Exception
except ImportError as e:
raise ImportError
finally:
pass
'''
在上面的例子中,下面的ImportError就不會被拋出,應爲ImportError繼承Exception,但是可以把Exception放在後面是可以的
e可以得到系統給出的報錯信息
'''
'''
try:
a=input("輸入數字:")
if a.isdigit():
print()
else:
raise TypeError
except Exception:#異常基類,捕捉所有的異常
print("你輸入錯誤")
'''
assert
'''
測試表示式,其返回值爲假,就會觸發異常
'''
assert 1==1
assert 1==2
'''
>>> assert 1>2 #斷言,如果返回False就會報錯
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
assert 1>2
AssertionError
'''