python 格式化輸出和文件操作(自帶)


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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM