語法: open(檔案路徑,訪問模式,encoding=編碼格式)
檔案路徑:
1. 指定路徑
「c:\path\file.txt」
r」c:\path\file.txt」
(windows下用」\」來分隔路徑
unix下用」/」分隔路徑)
2. 不指定路徑
file.txt,會在程式執行的目錄下建立
可以使用os模組改變路徑
編碼格式:
防止中文亂碼
gbk
utf-8
檔案的常用方法:
.read() 方法讀取檔案的全部內容
.seek() 移動指標
.write() 向檔案寫入字串
.readline(num) num給數字幾,就輸出幾個字元
.readline() 按行,一行一行的讀取檔案資料
.readlines() 按行讀取全部內容,返回的是乙個檔案資料列表,每一行是列表的乙個元素
對於唯讀模式(r)來說,如果檔案不存在則報錯:
file = open("text.txt","r") #text.txt 並不存在
file.close() #呼叫完需要將開啟的檔案關閉
執行結果:
traceback (most recent call last):
file "g:/pycharm_/python_basic/day08/demo01.py", line
1, in
file = open("text.txt","r")
filenotfounderror: [errno 2] no such file
ordirectory: 'text.txt'
對於寫入模式(w)來說,如果檔案不存在,仍會報錯,但會建立乙個新的檔案,如果檔案已存在將會覆蓋原檔案.
例如,向c盤乙個檔案寫入」hi!」
file = open(r"c:\users\123\1.txt","w")
file.write("hi!")
file.close()
執行後,會在「c:\users\123\1.txt」寫入「hi!」
我們使用.read()來讀取剛才寫進的內容
file = open(r"c:\users\123\1.txt","r")
print(file.read())
file.close()
執行結果:
hi
!
接下來我們在上述內容後追加內容」good morning!」
#向文字內追加內容
file = open(r"c:\users\123\1.txt","a",encoding="utf-8")
file.write(" \ngood morning!")
file.close()
#輸入文字裡的內容
file1 =open(r"c:\users\123\1.txt","r",encoding="utf-8")
print(file1.read())
執行結果:
hi
!good
morning
!
如果我們需要一行一行的輸出,可以使用.readline() 或 .readlines()
使用.readline()
file1 = open(r"c:\users\123\1.txt","r",encoding="utf-8")
print(file1.readline())
print(file1.readline())
執行結果:
hi!
good morning!
使用.readlines()會生成乙個列表,所以下面的內容中,我們把列表遍歷輸出
#向文字內追加內容
file1 = open(r"c:\users\123\1.txt","r",encoding="utf-8")
# print(file1.readlines()) #使用.readlines() 會生成乙個列表
data = file1.readlines()
i = 1
for nr in data:
print("第{}行內容為{}".format(i,nr))
i=i+1
執行結果:
第1行內容為hi
!第2行內容為good
morning
!
注意:考慮到安全因素,檔案呼叫完記得使用 file.close()將檔案關閉.
.read() 和 .seek()
當我們使用 .read()輸出完內容後,再次呼叫輸出內容為空,是因為指標這時指向了最後,如果我們想要再次輸出的話可以使用.seek()來改變指標的位置,從而再次輸出.
file1 = open(r"c:\users\123\1.txt","r",encoding="utf-8")
print(file1.read())
print(file1.read())
我們可以看到執行結果,只有一次內容輸出
hi!
good morning!
使用.seek()後
file1 = open(r"c:\users\123\1.txt","r",encoding="utf-8")
print(file1.read())
file1.seek(0)
print(file1.read())
執行結果:
hi!
good morning!
hi!good morning!
.readline(num)的用法
例如,我們輸出該檔案的第乙個字元
file1 = open(r"c:\users\123\1.txt","r",encoding="utf-8")
data1 = file1.readline(1)
print(data1)
執行結果:
h
安全的開啟檔案(自動呼叫.close())with open("test.txt","w",encoding="utf-8") as f:
f.write("測試寫入")
with open("test.txt","r",encoding="utf-8") as f:
for line in f:
print(line,end="")
執行結果:
測試寫入
利用os模組對檔案的一些基本操作
使用內建模組時需要先引用
所以使用: import 引用
對路徑可以加\表示是路徑,也可以在前面加r或者r表示
import os
os.mkdir(r"c:\users\123\one") #在某個路徑下建立資料夾,對c盤操作可能沒有許可權,會報錯
print(os.getcwd()) #獲取程式執行的當前目錄
print(os.chdir(r"e:\1111")) #改變到某個目錄下
print(os.getcwd())
os.chdir("../") #切換到上級目錄
print(os.getcwd())
a=os.listdir(r"e:\1111") #獲取指定目錄下的檔案列表
print(a)
os.rmdir(r"e:\1111") #刪除空的資料夾
import shutil
shutil.rmtree(r"e:\1111\444") #刪除非空的資料夾
python的操作步驟 python基本操作
一 python介紹 1 什麼是python python 是乙個高層次的結合了解釋性 編譯性 互動性和面向 物件的指令碼語言。2 什麼是物件導向 這意味著python支援物件導向的風格或 封裝在 物件的程式設計技術。3 什麼是解釋型別 這意味著開發過程中沒有了編譯這個環節。4 什麼是動態型別 5 ...
python模組之heapq模組(堆)基本操作
1 匯入模組 import heapq 匯入模組2 heapq 提供的常用方法 heapq.heapify head 將陣列轉化成堆 刪除堆頂,也就是最小值 往堆中增元素 heapq.nlargest n,head 查堆中最大的n個數 heapq.nsmallest n,head 查堆中最小的n個數...
python基本之檔案
恢復內容開始 一 檔案處理流程 開啟檔案,得到檔案控制代碼並賦值給乙個變數 通過控制代碼對檔案進行操作 關閉檔案 二 基本操作 1.檔案操作基本流程。f open chenli.txt 開啟檔案 first line f.readline print first line first line 讀一...