1. 程式人生 > >Python內置函數之--open

Python內置函數之--open

python解釋器 adl return 函數 得到 讀取文件 末尾 表達 字符

          open

1、open函數,該函數用於處理文件

2、open("文件名,模式(用什麽方式打開),編碼")

    a、基本的打開方式

        

#  1、只讀,r
f = open("ha.log","r")

#2、只寫,w,[文件不可讀;文件不存在則創建;存在則清空內容]
f = open("ha.log","w")
f.write("123")
f.close()

#3、x, 只寫模式【不可讀;不存在則創建,存在則報錯】
f = open("ha1.log","x")
f.write("456")
f.close()

#4、追加模式【不可讀;不存在則創建;存在則只追加內容;】
f = open("ha1.log","a") f.write("666") f.close()

    b、字節的方式打開

#1、只讀,rb
f = open("ha.log","rb")
data = f.read()
f.close()
print(type(data))

#2、只寫
f = open("ha.log","wb")
f.write(bytes("中國",encoding="utf-8"))
f.close()

     c、區別:

#普通打開
#普通打開已經經過內部python操作,直接是UTF-8,rb方式則需要自己轉換
#===python內部將101010 => 轉換成字符串,通過字符串操作
#010101 => python解釋器 => 程序員 #二進制打開方式 #rb方式打開只會得到2進制的代碼,需要自己轉換成utf-8

     d、"+" 表示可以同時讀寫某個文件

# r+, 讀寫【可讀,可寫】
# w+, 寫讀【可讀,可寫】
# x+ ,寫讀【可讀,可寫】
# a+, 寫讀【可讀,可寫】

      1、r+

# r,末尾追加,指針移動到最後
f = open("ha.log","r+",encoding="utf-8")
#指針為0,起始位置
#f.close()
#從開始向後讀
#寫,追加,指針調到最後
 

      2、w+,x+

#
w+,先清空文件內容,再寫之後,就可以讀取 #先清空,之後寫的才能讀,寫,指針到最後 f = open("ha.log","w+",encoding="utf-8") f.write("吳文") f.seek(0)#指針指向0 data = f.read() f.close() print(data) #x+基本同上,如果文件存在,則報錯

    3、a+

 a+
a,打開的同時,指針已經到最後了,文件裏面的內容讀不到
#寫時,也會追加,指針放到最後
f = open("ha.log","a+",encoding="utf-8")
data = f.read()
f.close()
print(data)

3、 文件的操作功能

#===============================
# f.tell()#獲取指針的位置
# f.seek(num)#調整指針的位置
#===============================
# close         關閉文件
# flush         強制刷新文件內部緩沖區
# read          讀取文件
# readline      讀取一行
# seek          文件中指針位置
# tell          獲取指針的位置
# truncate      截斷數據,僅保留指針指定之前數據
# write         讀取文件

4、讀取每一行的內容

f = open("ha.log","r",encoding="utf-8")

for line in f:
     print(line)  =>#f.readline,可以讀取所有行的內容

5、with open

#當with代碼塊執行完畢時,內部會自動關閉並釋放文件資源。
with open("ha.log","r") as f:
    f.read()
#python內部會幫你關閉不用寫f.close

 

#同時打開2個文件
with open("log1","r") as boj1, open("log2","r") as obj2:
     pass

#打開2個文件並進行傳送數據
 with open("源文件","r") as obj1,open("新文件","w") as obj2:
     for line in obj1:
         obj2.write(line)
 #打開一個源文件,同時吧內容寫入一個新文件裏面

6、lambda表達式

#lambda可以代替簡單的函數
def f1():
    return 123

 f2 = lambda :123

 def f3(a1,a2):
     return a1 + a2

 f4 = lambda a1,a2: a1+a2

 r1 = f1()
 print(r1)

 r2 = f2()
 print(r2)

    

Python內置函數之--open