CONTENTS
- 格式化輸出
- 兩種常用的格式化輸出方式
- %用法
- .format()用法
- 帶顏色,底紋樣式的輸出
- 兩種常用的格式化輸出方式
- python自帶文件操作
- 操作模式
- 常用方法
格式化輸出
1. % 用法
1 name = input("username:") 2 password = input("password:") 3 info = '''------------------ 4 username:%s 5 password:%s 6 ''' % (name, password) 7 print(info)
通過%s提供字符串占位符,然后在%后輸入占位符的內容。
在交互界面中,往往希望輸入的密碼是密文,可以使用如下模塊的方法代替input:
1 import getpass 2 password = getpass.getpass("password:") # 代替input("password:")
P.S.% 后可占位的類型
符號 | 說明 |
%s | 字符串 |
%c | 字符 |
%i | 整數 |
%d | 十進制 |
%o | 八進制 |
%x | 十六進制 |
%e | 浮點數 |
2. format的用法
1 name = input("name:") 2 age = input("age:") 3 job = input("job:") 4 salary = input("salary:") 5 info = ''' 6 ------------------- information of {0} ------------------ 7 Name: {0} 8 age: {1} 9 job: {2} 10 salary {3} 11 '''.format(name, age, job, salary) 12 print(info)
{0}...與%s的效果相同,也是起到占位符的效果。
當然,在{ }中,也可以使用關鍵字:
1 name = input("name:") 2 age = input("age:") 3 job = input("job:") 4 salary = input("salary:") 5 info = ''' 6 ------------------- information of {0} ------------------ 7 Name: {_name} 8 age: {_age} 9 job: {_job} 10 salary {_salary} 11 '''.format(_name = name, _age = age, _job = job, _salary = salary) 12 print(info)
打印輸出具有顏色或底紋效果
1 print("\033[40;1mhello world\033[0m")
字體顏色 | 底紋顏色 | ||
30 | 白色 | 40 | 白色 |
31 | 紅色 | 41 | 紅色 |
32 | 黃色 | 42 | 黃色 |
33 | 橘黃色 | 43 | 橘黃色 |
34 | 藍色 | 44 | 藍色 |
35 | 紫色 | 45 | 紫色 |
36 | 綠色 | 46 | 綠色 |
37 | 灰色 | 47 | 灰色 |
其中,可以更改代碼中的40來調節不同字體或底紋顏色,如上表所示。
python自帶文件操作
1. 文件操作模式
- r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】
- w,只寫模式【不可讀;不存在則創建;存在則清空內容】
- x, 只寫模式【不可讀;不存在則創建,存在則報錯】
- a, 追加模式【可讀; 不存在則創建;存在則只追加內容】,文件指針自動移到文件尾。
"+" 表示可以同時讀寫某個文件
- r+, 讀寫【可讀,可寫】
- w+,寫讀【可讀,可寫】,消除文件內容,然后以讀寫方式打開文件。
- x+ ,寫讀【可讀,可寫】
- a+, 寫讀【可讀,可寫】,以讀寫方式打開文件,並把文件指針移到文件尾。
"b"表示以字節的方式操作,以二進制模式打開文件,而不是以文本模式。
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型(b"字符串"),不能指定編碼
2. 常用方法
f.read() # read([size])方法從文件當前位置起讀取size個字節,若無參數size,則表示讀取至文件結束為止,它范圍為字符串對象
f.readline() # 該方法每次讀出一行內容,所以,讀取時占用內存小,比較適合大文件,該方法返回一個字符串對象
f.readlines() # 讀取整個文件所有行,保存在一個列表(list)變量中,然后一行一行輸出。 也是先全部讀入內存中,不適合較大文件
f.write() # 寫操作
f.close() # 關閉文件句柄
f.tell() # 光標所在位置(按字符的個數)
f.seek # 光標回到某一位置
f.readable # 是否可讀
f.writeable # 是否可寫
f.seekable # 光標是否可移
1 import time 2 f = open("聖所.txt", "r", encoding="utf-8") 3 lines = f.readlines() # 模擬播放器,逐行輸出歌詞 4 for line in lines: 5 time.sleep(1) 6 print(line)
7 f.close
使用下述語句進行操作,便不用再進行關閉文件操作:
with open("聖所.txt", "r", encoding = "utf-8") as f: f.read()
一種逐行輸出的高效循環方式:
讀一行,只在內存中存一行,再讀一行后清空之前的,省內存
1 # 高效的循環方式: 2 with open("聖所.txt", "r", encoding="utf-8") as f: 3 for line in f: # line相當於是迭代器
4 time.sleep(1) 5 print(line)
同時打開多個文件:
1 with open("聖所.txt", "r", encoding= "utf-8") as f, \ 2 open("偉大的渺小.txt", "r", encoding= "utf-8") as f1: 3 f.read() 4 f1.read()