# 文件的讀取與寫入
#open() 打開文件,w 表示寫入,r表示讀取,a 追加寫入, 必須填入的是文件路徑, 如果沒有默認的參數,就表示模式是讀取模式
'''print('d:\note1.txt') #\n有特殊含義,類似的還有\t, 解決辦法:可以在\前再加一個\,方法2:在字符串外面加一個小寫的r,表示后面的字符串中的字符都不轉義
方法3:\ 改為/也可以識別
'''
#一般的讀取文件,當為r模式時,如果找不到文件會報錯
file1 = open('F:/test01.txt')
print(file1.read(10))
print(file1.tell())#tell() 表示目前文件中,光標的位置
print('文件指針的位置'+str(file1.tell()))
file1.seek(3) #第一個參數的光標偏移幾位,第二個參數的可以不寫, 默認為0,表示從文件開頭開始計算
#如果seek的第二個參數不為0,為1或2,1表示從當前指針的當前位置開始偏移,2表示從文件末尾開始偏移
#seek()的第二個參數如果是1和2,那么只有在rb模式才能用,,rb是指以二進制方式進行讀取
#關閉文件,雖然pycharm會幫你關閉文件,但是其他的編輯器可能不會幫你關,所以要養成寫close()的習慣
file1.close() #在open()函數的最后,要使用close()方法
print(file1.readline()) #讀取文件的一行
print(file1.readlines()[2]) #讀取文件的多行,返回值為列表形式,如果寫[2]則返回第2行
print(file1.read().splitlines()) #去掉換行符,返回值是列表類型
文件的寫入
file2=open(r'f:\test01.txt','w') #w方法表示寫入,並且會清除文件之前的內容
file2.write('這是新寫入的內容')
file2.close()
#a 方法是在文件內容后面接着寫,當沒有文件時會自動生成文件,且將新內容添加到文件中
# r方法,如果沒有文件,則會報錯
file2=open(r'f:\test01.txt','a') #w方法表示寫入,並且會清除文件之前的內容
file2.write('這是新寫入的內容')
file2.close()
同時進行讀取和寫入的模式 r+ 可同時進行讀寫,沒有文件會報錯,
w+,可同時讀寫,
a+ 可同時讀寫,從文件末尾開始接着寫
./
file2=open(r'f:\test01.txt','r+')
file2.write('這是新寫入的內容')
file2.seek(0) #光標回到初始位置
print(file2.read()) #讀取文件的全部內容
file2.close()
#with open() 是open的升級版,不需要寫close方法,支持同時打開多個文件
# with open(r'f:\test01.txt','w+') as f:
# f.write('這是新加的內容222222') #用新寫入的內容替換原有的內容
with open(r'f:\test01.txt','r+') as f:
f.write('這是新加的內容33') #用新寫入的內容替換原有的一部分內容,新內容如果比原內容斷,則替換一部分,新內容比原內容長,則全部替換