文件操做:w,w+,r,r+,a,wb,rb

1.文件操做是什麼?

操做文件:
f = open("文件路徑",mode="模式",encoding="編碼")
open() # 調用操做系統打開文件
mode # 對文件的操做方式
encoding # 文件的編碼 -- 存儲編碼要統一
# win -- gbk
# linux -- utf-8
# mac -- utf-8 最經常使用的就是utf-8linux

f 文件句柄 -- 操做文件的至關於鍋把編碼

讀 r 寫: w清空寫 ,a追加寫 讀 rb 寫 wb ab操作系統

2.讀

r rb r+ r+bcode

r對象

文件所有讀取完後之後,再次讀取就沒有內容內存

f = open("a",mode="r",encoding="gbk")utf-8

content = f.read() # 所有讀取開發

c1 = f.read(3) # 按字符個數讀取rem

print(f.readline(3)) # 讀取一行內容中多個字符get

print(f.readlines()) # 一行一行讀取,存儲到列表中 獲取到的內容裏顯示\n,\n是換行

f = open("a",mode="r",encoding="gbk")

print(f.read())

路徑

F:\a\111.txt 絕對路徑 從磁盤的根處查找
相對路徑 相對於當前文件進行查找的

查看當前工做路徑

import os
print(os.getcwd()) #

print(repr("F:\a\文件初識.txt"))
print("F:\a\文件初識.txt")

一行一行讀取 -- 防止內存溢出
for i in f: # 迭代讀取print(i)

3.寫

寫 w 清空寫 a 追加寫
w 分爲兩步
1.檢測是否存在文件,沒有文件,建立文件,有文件清空文件

  1. 在寫入

f = open("day8",mode="w",encoding="utf-8") #打開
f.write("123") # 寫
f.close() # 關閉文件

操做文件:1.打開文件 2.操做文件 3.關閉文件

f = open("a",mode="r",encoding="gbk")
print(f.read())
f.close()  # 關閉文件後就不能繼續讀取了

f = open("a",mode="a",encoding="gbk")
f.write("啊啊啊,好睏啊")
文件末尾添加

4.讀寫非文本文件

f = open("1.jpg",mode="rb")

rb ,wb,ab 不能指定編碼
print(f.read()) # read() 所有讀取
print(f.read(3)) # 字節

import requests 爬取
ret = requests.get("http://www.521609.com/uploads/allimg/151124/1-1511241G251317.png")
f = open("2.jpg",mode="wb")
f.write(ret.content)
f.close()

5.文件的+模式

r 讀 r+ 讀寫
w 寫 w+ 寫讀
a 寫 a+ 寫讀

錯誤示範
f = open("day8",mode="r+",encoding="utf-8")
f.write("你好啊") #文件此時會被改寫
print(f.read()) #讀到的內容是修改後的

正確示範 -- 後期開發中使用頻率比較低
f = open("day8",mode="r+",encoding="utf-8")
print(f.read())
f.write("腦瓜疼啊腦瓜疼")

  1. w+ 寫讀
    f = open("day8",mode="w+",encoding="utf-8")
    f.write("你您你你")
    print(f.read())
  2. a+ 追加寫讀
    f = open("a",mode="a+",encoding="gbk")
    print(f.tell()) # 查看的是字節
    f.seek(0)
    print(f.read(1)) # 字符
  3. 其餘操做:

查看光標: tell() 返回值 返回的就是當前光標的位置
移動光標:
seek(0,0) 文件開始位置
seek(0,1) 光標的當前位置
seek(0,2) 文件末尾位置
seek(3) 按照字節調節 使用utf-8是3 gbk是2

6.另外一種文件打開方式

f = open("day8",mode="r",encoding="utf-8")
f.read()

with open("day8",mode="r",encoding="utf-8") as f: # 面向對象中上下文管理
print(f.read())

with open 幫助自動關閉文件
with open 同時操做多個文件

with open("day8",mode="r",encoding="utf-8") as f, open("a",mode="w",encoding="gbk") as f1:
print(f.read())
f1.write("真餓!")

7.文件的修改

with open("day8",mode="r+",encoding="utf-8")as f:

     content = f.read()    #賦值
     content = content.replace("您","你") #替換
     f.seek(0,0) #移動光標到文首
     f.write(content)  #寫入內容



 with open("day8",mode="r",encoding="utf-8")as f,\
 open("new_day8",mode="a",encoding="utf-8")as f1:

     for i in f:
         content = i.replace("你","我")
         f1.write(content)


# import os 建立備份文件

# os.remove("day8")  # 原數據能夠使用rename來作備份
# os.rename("new_day8","day8")
# 1.文件初識

# open() # 打開文件

# open("文件的路徑")

# open(mode="對文件的操做方式")

# open(encoding="utf-8")

# 編碼:win -gbk linux - utf-8 mac -- utf-8

# f = open()  #文件句柄



# 讀文本

# r 模式

# read()  # 所有讀取

# read(3) # 經過字符來讀取

# readline() # 讀取一行

# readlines() # 一行一行的讀取存放的列表中



# 寫文本

# w  清空寫, a 追加寫



# w操做:

# 1.先判斷有沒有文件存在,文件存在清空文件,文件不存在建立文件

# 2.寫入內容



# a操做:

# 在文件的末尾添加



# 讀非文本

# rb  不能指定編碼

# 寫非文本

# wb  ab  不能指定編碼



# +操做:

    # r+  讀寫

        # 1.先讀,再寫

    # w+ 寫讀

        # 2.先寫後讀

    # a+ 追加寫讀

        # 3. 先寫後讀



# 其餘操做:

# tell() 查看光標 -- 返回光標的當前位置(字節)



# seek 移動光標

    # seek(0,0) # 移動光標到文件開始位置

    # seek(0,1) # 光標的當前位置

    # seek(0,2) # 移動光標到文件的末尾位置

    # seek(3)   # 按照字節移動



# 另外一個打開方式:

# with open("文件路徑",mode="操做文件的方式",encoding="編碼") as f:

# 上下文管理

# 1.能夠自動幫助我們關閉文件

# 2.能夠同時打開多個文件



# 修改文件:

# with open("原文件")as f,open("新文件")as f1:

    # f.for循環的讀取

    # f1.for循環的寫入



# import os

# os.rename("原文件名字",備份名字")    # 對原文件進行備份

# os.rename("新文件名字","原文件名字") # 把新文件改爲原文件的名字
相關文章
相關標籤/搜索