python-檔案操作

來源:互聯網
上載者:User

標籤:dig   readlines   原理   方法   coding   rename   導致   .com   adl   

1、開啟檔案
2、對檔案進行讀/寫
3、關閉檔案

# 開啟檔案,檔案路徑可以是絕對路徑,路徑前面r是原字元的意思,不轉義檔案路徑中逸出字元
# f= open(r‘麗麗‘,‘a‘,encoding=‘utf-8‘)
# f= open(r‘使用者名稱密碼‘,encoding=‘utf-8‘)
# 讀取檔案
# print(‘read:\n‘,f.read()) #擷取檔案裡面的所有內容
# print(‘readline:‘,f.readline()) #讀取檔案一行的資料
# print(‘readlines:‘,f.readlines()) #擷取檔案裡面所有的資料,返回的是一個list,每一行的資料放到一個list裡面
#檔案的指標,是控制檔案到底讀到哪裡的,讀檔案和寫檔案時,檔案指標都會移動
# 寫檔案
# f.write(‘sfsdh‘) #寫檔案

# 樣本:
f= open(r‘檔案讀寫‘,‘a+‘,encoding=‘utf-8‘)
# f.seek(0) #移動檔案指標到最前面
# print(f.read())
# f.write(‘會覆蓋睡覺的好的老公‘) #寫一個字串
f.writelines() #寫一個list
#樣本:
for i in list:
f.writelines()

# f.seek(0) #移動檔案指標到最前面
# print(f.read())

#檔案開啟的三種模式:唯讀模式;寫入模式;追加模式
# 1、有沒有清空以前的內容
# 2、能不能讀到東西
# 3、檔案不存在的時候會不會報錯
# 讀模式 r 預設模式,只能讀,不能寫,檔案不存在會報錯,
# 讀寫入模式 r+ 可讀可寫,開啟不存在檔案也會報錯,不會覆蓋以前的內容,寫完檔案後檔案指標移動到檔案最後邊,導致讀不到東西
# 寫入模式 w 只能寫,不能讀,會覆蓋以前檔案裡面的內容,檔案不存在,會幫你建立一個
# 寫讀模式 w+ 可讀可寫,寫時會覆蓋以前檔案的內容,讀不報錯,但是讀不到東西,因為字寫檔案的時候檔案指標移動到檔案的最後邊,所以讀不到東西
‘‘‘
只要沾上r,檔案不存在肯定會報錯,檔案指標在開頭
只要沾上w,檔案內容肯定會被清空,檔案指標在開頭或者末尾
a 模式的檔案指標在末尾
‘‘‘
# 追加模式 a 在檔案的末尾追加東西,可寫,不會覆蓋檔案之前的內容,檔案不存在會建立檔案,但不可讀,會報錯
# 追加讀模式 a+ 追加讀模式,能讀能寫,不會清空以前的內容,檔案不存在會建立,預設開啟檔案的時候檔案指標在最後,所以讀不到東西。
# f.seek(0) #移動檔案指標到最前面

# 樣本2
names=[‘qq‘,‘ss‘,‘dd‘,‘cc‘]
for name in names:
f.write(name+‘\n‘)
# f.writelines(names) #傳一個list,然後把list裡面的每一個元素寫到檔案中
# f.readlines()
# f.close()
print(f.read())

檔案操作另一種方法
#用with開啟檔案
with open(‘1-筆記‘,‘w‘) as f:
f.read()
f.write()
#用with同時開啟2個及以上的檔案
with open(‘1-筆記‘,‘w‘) as f , open(‘使用者名稱密碼‘,‘w‘) as f2:
f.read()
f.write()

檔案修改
f=open(‘使用者名稱密碼‘,‘r+‘,encoding=‘utf-8‘)
f.seek(0)
data = f.read()
new_data =data.replace(‘123‘,‘a‘)
# print(new_data)
f.seek(0)
f.write(new_data)
這種檔案修改方式會出錯

第一種:簡單粗暴:資料量小的時候可以用
1、先擷取到檔案裡面的所有內容
2、然後修改內容
3、清空源檔案中所有內容
4、重新寫入
樣本
f=open(‘使用者名稱密碼‘,‘a+‘,encoding=‘utf-8‘)
f.seek(0)
data = f.read()
new_data =data.replace(‘a‘,‘python‘)
f.seek(0)
f.truncate() #清空檔案
f.write(new_data)
f.flush()
# f.close()
f.seek(0)
print(f.read())

第二種:高效的處理方式:一行一行處理,資料量大的時候用,就是win系統中修改檔案內容的原理
1、先開啟源檔案:words,再開啟一個空檔案:words_new
2、迴圈處理源檔案裡面每一行資料,處理完之後,寫到新檔案裡面
3、把源檔案刪除,把新檔案的名字修改成源檔案的名字
4、

import os
with open(r‘words‘,encoding=‘utf-8‘) as fr , open(‘.words‘,‘w‘,encoding=‘utf-8‘)as fw:
for line in fr:
line=line.lstrip() #去掉左邊的空格
if line : #非空即真原理,判斷這一行是否有資料
line=line.replace(‘你‘,‘you‘) #替換資料
fw.write(line) #寫到新檔案中
os.remove(‘words‘) #刪除源檔案
os.rename(‘.words‘,‘words‘) #把新檔案的名字更改成源檔案名稱字

import os
with open(r‘eamil‘,encoding=‘utf-8‘) as fr , open(‘.eamil‘,‘w‘,encoding=‘utf-8‘)as fw:
for line in fr:
# line=line.lstrip() #去掉左邊的空格
if not line[0].isdigit(): #判斷是否為純數字
print(‘line:‘,line)
line=line.replace(‘\n‘,‘@163.com\n‘) #替換資料
fw.write(line) #寫到新檔案中
fw.flush()
os.remove(‘eamil‘) #刪除源檔案
os.rename(‘.eamil‘,‘eamil‘) #把新檔案的名字更改成源檔案名稱字

# print(name.isspace()) #判斷只能有英文、漢子就返回真

python-檔案操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.