python---文件操做

1、對文件操做流程
1.打開文件,獲得文件句柄並賦值給一個變量
2.經過文件句柄對文件進行操做
3.關閉文件


2、文件打開模式
f = open("file_test","r",encoding = "utf-8")    #打開文件,「讀模式」,只能讀,獲得文件句柄並賦值給一個變量
print(f.read())                     #讀文件全部內容,讀完以後文件光標跳到最後,文件大時慎用
f.close()

f1 = open("file_test","w",encoding="utf-8")     #寫模式,會新建一個file_test文件,再往裏寫入
f1.write("-------------")
f1.close()

f2 = open("file_test","a",encoding="utf-8")     #追加模式,在原文件內容最後追加,無原文件則新建
f2.write("-------------")
f2.close()

f3  = open("file_test","r+",encoding="utf-8")    #讀寫模式,寫在原文件內容最後追加,無原文件則新建
print(f3.readline())                  #按行讀
print(f3.readline())
print(f3.readline())                  #打印前三行,這個時候光標移動到第三行位置
print(f3.tell())                    #打印光標位置
f3.write("--------------")               #可是寫入仍是文件內容最後寫入
f3.close()

f4  = open("file_test","w+",encoding="utf-8")    #寫讀模式,,只要是「寫在前」都會建一個新文件,在寫入
f4.write("----------------------\n")
f4.write("----------------------\n")
f4.write("----------------------\n")
f4.seek(10)                       #光標移動到10的位置
f4.write("test4")                    #再寫入會將原內容覆蓋
f4.seek(0)                        #將光標移動到開頭的位置
print(f4.read())
f4.close()
#輸出
#----------ni hao -----
#----------------------
#----------------------

f5  = open("file_test","a+",encoding="utf-8")    #追加讀模式,在原文件內容最後追加,無原文件新建
f5.write("----------------------\n")
f5.write("----------------------\n")
f5.write("----------------------\n")
f5.seek(10)                       #光標移動到10的位置
f5.write("test5")                    #再寫入會在文件內容最後寫入
f5.seek(0)
print(f5.read())
f5.close()

f6  = open("file_test","rb")                 #以二進制文件格式讀這個文件
print(f6.readline())
print(f6.readline())
print(f6.readline())
f6.close()

f7  = open("file_test","ab")                 #以二進制文件格式追加這個文件
f7.write("-------------------\n".encode())       #encode 將str字符轉換爲bytes
f7.write("-------------------\n".encode())
f7.write("-------------------\n".encode())
f7.close()

f8  = open("file_test","wb")                 #以二進制文件格式寫這個文件
f8.write("-------------------\n".encode())       #encode 將str字符轉換爲bytes
f8.write("-------------------\n".encode())
f8.write("-------------------\n".encode())
f8.close()


#注:還有rU或r+U模式,"U"表示在讀取時,能夠將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)

3、文件循環python

#按行循環,而且將第五行替換
f = open("file_test","r",encoding="utf-8")
count = 0
for line in f:
    count += 1
    if count == 5:
        print("----分割線----")
        continue
    print(line.strip())                           #strip是去除行首行尾的空格符和換行符
f.close()

#f.readlines()                                    #切記用f.readlines是先將文件轉換爲列表,若是文件太大時對內存消耗太大

4、文件的修改緩存

#打開一個文件,修改完了寫到一個新文件
f = open("file_test","r",encoding="utf-8")
f_new = open("file_new","w",encoding="utf-8")
for line in f:                               #按行取出,每行都是一串字符串
    if "fengxiaoli" in line:
        line = line.replace("fengxiaoli","FENGXIAOLI")       #對字符串進行操做,J
    f_new.write(line)
f.close()
f_new.close()

5、flush方法ide

f = open("file_test","w",encoding="utf-8")
f.write("hello\n")
f.write("hello\n")
f.write("hello\n")
f.flush()       #當往文件寫內容的時候,會有一個緩存,達到一個時間,一次往文件寫入。若是這時候斷電可能內容並無寫入成功,flush刷新會當即執行

6、with語句編碼

#with語句做用,爲了不打開文件後忘記關閉

with open("file_test","r",encoding="utf-8") as f:          #相似於f = open("file_test","r",encoding="utf-8")

with open("file_test","r",encoding="utf-8") as f, \        #還能夠同時打開多個文件
        open("file_test2","r",encoding="utf-8") as f2:

7、其餘操做
spa

f = open("file_test","r",encoding="utf-8")
print(f.tell())              #打印光標位置,按字符計數
print(f.readline())          #按行讀
print(f.read(10))            #按字符讀
print(f.tell())
f.seek(0)                   #把光標回到開頭
f.seek(12)                  #把光標移動到12個字符的位置
print(f.readline())
print(f.encoding)           #打印文件編碼

print(f.isatty())           #判斷文件是不是終端設備,返回Ture or false
print(f.seekable())         #判斷是否能移動文件光標,返回Ture or false
print(f.readable())         #判斷文件是否可讀
print(f.writable())         #判斷文件是否可寫


# f  = open("file_test","a",encoding="utf-8")
# f.truncate(12)      #從頭開始截取多少字符
相關文章
相關標籤/搜索