1. 程式人生 > >python中檔案的讀和寫操作

python中檔案的讀和寫操作

一、開啟檔案

data = open("yesterday",encoding="utf-8").read()
# python預設的打字元編碼是unicode,處理不了gbk,但是utf—8可以

print(data)

ps:這邊的yesterday檔案是一首英文歌的歌詞

在開啟的時候,一定要轉碼,否則會亂碼:encoding="utf-8"
在這裡插入圖片描述
二、讀取前幾行
會用到read( )和readline( )方法

f = open("yesterday",encoding="utf-8")  # 檔案控制代碼,方法和1類似
# data = f.read()   # 游標在最後面
# print(data)
# f.readline()   # 讀取一行,只適合讀小檔案
for i in range(5):
    print(f.readline())    # 迴圈之後讀取四行

在這裡插入圖片描述
三、讀取前幾行(優化版)
用到了迭代器,所以不會像二一樣佔用太大的記憶體,最後只會佔用一行的記憶體

f = open("yesterday",encoding="utf-8")
# 實現前九行的輸入,並且在第九行輸入分割線
count = 0
for line in f:
    if count == 9:
        print("--------分割線-------")
        count += 1
        continue
    print(line)    # 迭代器!效率最高的迴圈方式,比2效率高是因為讀完一行就刪一行
    count +=1

在這裡插入圖片描述


四、關於檔案的方法
python不是直接呼叫所有檔案,而是呼叫作業系統的介面I/O,通過介面來呼叫檔案


# 1.tell()方法:游標的位置
f = open("yesterday",encoding="utf-8")
print("1:",f.tell())    # 把指標的位置表示出來,0
print("2:",f.readline())
print("3:",f.tell())    # 讀完一行字元之後游標的位置
print("4:",f.readline(3))
print("5:",f.tell())    # 讀完三行字元之後游標的位置

#2.seek()方法: 游標回到第幾行
f.seek(0)
print("6:",f.tell())   # 游標重新回到了開始

# 3.encoding  # 列印檔案的編碼型別
print("7:",f.encoding)

# 4.fileno()  可用於底層作業系統的 I/O介面操作。
print("8:",f.fileno())

# 5.flush()
print(f.flush())  # 實時重新整理檔案內容

在這裡插入圖片描述
其實在學習python基礎的時候,pycharm的聯想功能非常重要!

小福利:

開啟檔案的模式有:

r,只讀模式(預設)。
w,只寫模式。【不可讀;不存在則建立;存在則刪除內容;】
a,追加模式。【可讀; 不存在則建立;存在則只追加內容;】

“+” 表示可以同時讀寫某個檔案
r+,可讀寫檔案。【可讀;可寫;可追加】
w+,寫讀
a+,同a

"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
rU
r+U

"b"表示處理二進位制檔案(如:FTP傳送上傳ISO映象檔案,linux可忽略,windows處理二進位制檔案時需標註)一般是在跨平臺的時候需要處理二進位制檔案,比如Windows到linux;視訊檔案也需要處理二進位制檔案

rb —讀,以二進位制模式開啟,此時不需要即encoding,
wb—寫,此時需要加入encoding
在這裡插入圖片描述
ab