1. 程式人生 > >Python學習Day8—文件基本操作

Python學習Day8—文件基本操作

Coding 文件句柄 world lena txt 其他 ont mce -s

打開文件

    #’filename.txt‘處指定文件路徑,可以使用絕對路徑和相對路徑
    #mode=‘w‘指定文件的打開方式
    #encoding=‘utf-8‘指定文件編碼
f = open(filename.txt,mode=w,encoding=utf-8)

f.close() #關閉文件,使用上面句柄打開文件後,文件會一直在內存中運行,在對文件進行操作後,應記得關閉文件

---------------------------------------------------------------------------
#使用with關鍵字+open打開文件後,不用再使用close對文件進行關閉,並且可以同時打開多個文件,打開多個文件需要用逗號隔開,最後的句柄名稱後需要加冒號
with open(filename.txt,mode=w,encoding=utf-8) as f:#打開一個文件 with open(filename.txt,mode=w,encoding=utf-8) as f,with open(filename.txt,mode=w,encoding=utf-8) as f1:#打開多個文件

操作文件

1.讀

# 此處filename.txt文件中原始內容為:人生苦短,我用python
# ①r——只讀,不存在報錯
with open(filename.txt, mode=r, encoding=
utf-8) as f: content = f.read() print(content) >>> 人生苦短,我用python # ②rb——以bytes類型讀 with open(filename.txt, mode=rb) as f: content = f.read() print(content) >>> b\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python # ③r+——讀寫,不存在不會創建,寫會覆蓋之前內容
with open(filename.txt, mode=r+,encoding=utf-8) as f: content = f.read() f.write(\n新添加:Life is short , I use python) print(content) >>> 人生苦短,我用python # ④target_file.txt中的內容為: >>> 人生苦短,我用python >>> 新添加:Life is short , I use python # ⑤r+b——以bytes類型讀寫 with open(filename.txt, mode=r+b) as f: content = f.read() f.write(\n新添加:Life is short , I use python.encode(utf-8)) print(content) >>> b\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python # target_file.txt中的內容為: >>> 人生苦短,我用python >>> 新添加:Life is short , I use python

2.寫

# 此處filename.txt文件中原始內容為空,需要向其中寫入:人生苦短,我用python
# ①w——只寫,不存在則創建,存在則清空再寫
with open(filename.txt, mode=w, encoding=utf-8) as f:
    content = f.write(人生苦短,我用python)
# target_file.txt中的內容為:
>>> 人生苦短,我用python


# ②x——只寫,不存在則創建,存在則報錯
with open(filename.txt, mode=x, encoding=utf-8) as f:
    content = f.write(人生苦短,我用python)
# target_file.txt存在:
>>> Traceback (most recent call last):
>>>    File "D:/python_fullstack_s9/day8/practice.py", line 94, in <module>
>>>      with open(target_file.txt, mode=x, encoding=utf-8) as f:
>>>  FileExistsError: [Errno 17] File exists: target_file.txt
# filename.txt不存在:
>>> 人生苦短,我用python

# # ③wb——以bytes類型寫
with open(filename.txt, mode=wb) as f:
    content = f.write(人生苦短,我用python.encode(utf-8))
>>> 人生苦短,我用python

# # ④w+——寫讀,不存在則創建,寫會覆蓋之前的內容
with open(filename.txt, mode=w+) as f:
    content = f.write(hello,world)
    date = f.read()
    print(date)
>>>
# filename.txt中的內容為:
>>> hello,world

# # ⑤w+b——以bytes類型寫讀
with open(filename.txt, mode=w+b) as f:
    content = f.write(hello,world.encode(utf-8))
    date = f.read()
    print(date)
>>> b‘‘
# filename.txt中的內容為:
>>> hello,world

3.追加

# 此處filename.txt文件中原始內容為:人生苦短,我用python,需要在後面添加‘誰用誰知道‘內容
# ①a——追加,不存在則創建,存在則追加
with open(filename.txt, mode=a, encoding=utf-8) as f:
    content = f.write(誰用誰知道)
filename.txt中的內容為:
>>> 人生苦短,我用python誰用誰知道

# ②ab——以bytes類型追加
with open(filename.txt, mode=ab) as f:
    content = f.write(誰用誰知道.encode(utf-8))
>>> 人生苦短,我用python誰用誰知道

# ③a+——可讀可寫,不存在則創建,寫則追加
with open(filename.txt, mode=a+,encoding=utf-8) as f:
    content = f.write(誰用誰知道)
    f.seek(0)
    date = f.read()
    print(date)
>>> 人生苦短,我用python誰用誰知道

# ④a+b——以bytes類型可讀可寫
with open(filename.txt, mode=a+b) as f:
    content = f.write(誰用誰知道.encode(utf-8))
    f.seek(0)
    date = f.read()
    print(date)
>>> b\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python\xe8\xb0\x81\xe7\x94\xa8\xe8\xb0\x81\xe7\x9f\xa5\xe9\x81\x93
# filename.txt中的內容為:
>>> 人生苦短,我用python誰用誰知道

4.其他操作

① seek() 移動光標指針位置

seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的

② tell() 返回當前指針所在的位置

tell對於英文字符就是占一個,中文字符占三個,參數表示的是字節數區分與read()的不同.

③ truncate() 截斷文件

truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果

④ readline() 讀取一行

⑤ readlines() 讀取多行,返回為列表

⑥ readable() 文件是否可讀

⑦ writeline() 寫入一行

⑧ writelines() 寫入多行

⑨ writable() 文件是否可讀

⑩ closed() 文件是否關閉

? encoding=’utf-8’ 如果文件打開模式為b,則沒有該屬性

? flush() 立刻將文件內容從內存刷到硬盤

? for循環文件句柄

with open(filename.txt, mode=r,encoding=utf-8) as f:
    for i in f:
        print(i)
>>> 人生苦短,我用python
>>> 誰用誰知道

Python學習Day8—文件基本操作