Python3 File(文件) 方法
file 對象使用 open 函數來創建,下表列出了 file 對象常用的函數:
序號 | 方法及描述 |
---|---|
1 | 關閉文件。關閉后文件不能再進行讀寫操作。 |
2 | 刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件, 而不是被動的等待輸出緩沖區寫入。 |
3 | 返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。 |
4 | 如果文件連接到一個終端設備返回 True,否則返回 False。 |
5 | 返回文件下一行。 |
6 | 從文件讀取指定的字節數,如果未給定或為負則讀取所有。 |
7 | 讀取整行,包括 "\n" 字符。 |
8 | 讀取所有行並返回列表,若給定sizeint>0,返回總和大約為sizeint字節的行, 實際讀取值可能比 sizeint 較大, 因為需要填充緩沖區。 |
9 | 設置文件當前位置 |
10 | 返回文件當前位置。 |
11 | 從文件的首行首字符開始截斷,截斷文件為 size 個字符,無 size 表示從當前位置截斷;截斷之后 V 后面的所有字符被刪除,其中 Widnows 系統下的換行代表2個字符大小。 |
12 | 將字符串寫入文件,沒有返回值。 |
13 | 向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符。 |
領悟悟悟
437***659@qq.com
檢索指定路徑下后綴是 py 的所有文件:
#!/usr/bin/python3 import os import os.path #path = 'D:/UC/' ls = [] def getAppointFile(path,ls): fileList = os.listdir(path) try: for tmp in fileList: pathTmp = os.path.join(path,tmp) if True==os.path.isdir(pathTmp): getAppointFile(pathTmp,ls) elif pathTmp[pathTmp.rfind('.')+1:].upper()=='PY': ls.append(pathTmp) except PermissionError: pass def main(): while True: path = input('請輸入路徑:').strip() if os.path.isdir(path) == True: break getAppointFile(path,ls) #print(len(ls)) print(ls) print(len(ls)) main()
領悟悟悟
437***659@qq.com
f123wk
f12***@xxx.com
獲取文件后綴:
def getfile_fix(filename): return filename[filename.rfind('.')+1:] print(getfile_fix('runoob.txt'))
f123wk
f12***@xxx.com
RyenToretto
951***321@qq.com
用戶輸入"xxx.txt"類文檔文件名
用戶輸入被替換的"待替換字"
用戶輸入替換目標"新的字"
用戶判斷是否全部替換 yes/no
def file_replace(file_name, rep_word, new_word): f_read = open(file_name) content = [] count = 0 for eachline in f_read: if rep_word in eachline: count = count+eachline.count(rep_word) eachline = eachline.replace(rep_word, new_word) content.append(eachline) decide = input('\n文件 %s 中共有%s個【%s】\n您確定要把所有的【%s】替換為【%s】嗎?\n【YES/NO】:' \ % (file_name, count, rep_word, rep_word, new_word)) if decide in ['YES', 'Yes', 'yes']: f_write = open(file_name, 'w') f_write.writelines(content) f_write.close() f_read.close() file_name = input('請輸入文件名:') rep_word = input('請輸入需要替換的單詞或字符:') new_word = input('請輸入新的單詞或字符:') file_replace(file_name, rep_word, new_word)