Python文件讀寫保存操作的示例代碼
記錄下第一次使用Python讀寫文件的過程,雖然很簡單,第一次實(shí)現(xiàn)其實(shí)也有些注意的事項(xiàng)。
單個(gè)文件的讀操作:
我們先假設(shè)一個(gè)需求如下:
- 讀取一個(gè)test.txt文件
- 刪除指定字符之前的文本
需求明白之后,下面開始動(dòng)手寫代碼,代碼很簡單。就直接上全部的,細(xì)節(jié)看注釋:
import sys
filePath = "/Users/xxxxxx/Desktop/test.txt"
# 打開文件
files = open(filePath, 'r')
# 轉(zhuǎn)成list
f_list = files.readlines()
tempIndex = 0
# 對(duì)f_list 循環(huán) 每個(gè)index對(duì)應(yīng)一行數(shù)據(jù)
for index in range(len(f_list)):
# temp是獲取一行的數(shù)據(jù)
temp = f_list[index]
# 判斷"test"是不是temp這行數(shù)據(jù)的首位 如果是首位 result為true
result = temp.find("test") == 0
if result:
# 如果是首位 這就是我們要?jiǎng)h除的位置 獲取他的index
tempIndex = index
break
# 存放新數(shù)據(jù)
tempContainer = []
for index in range(len(f_list)):
if index > tempIndex:
# tempIndex之前的數(shù)據(jù)我們不處理,把tempindex之后的數(shù)據(jù)存到新的list里面
tempContainer.append(f_list[index])
# 這就獲得了我們需要的新數(shù)據(jù)
print(tempContainer)
以上代碼就完成了需求,非常簡單。有幾個(gè)注意點(diǎn):
- 直接用open獲取的數(shù)據(jù)無法進(jìn)行處理,所以先轉(zhuǎn)成可以處理的數(shù)據(jù),比如list或者字典等。
- python的open和C的類似,有r,r+, w, w+等各種狀態(tài),見具體介紹
open函數(shù)的常見操作方式
1、r 打開只讀文件,該文件必須存在。
2、r+ 打開可讀寫的文件,該文件必須存在。
3、w 打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
4、w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
多文件讀寫保存
假設(shè)一個(gè)需求如下:
- 多個(gè)文件都要處理
- 和上面的test.txt處理方式類似
- 處理完之后保存到一個(gè)新文件夾內(nèi)
其實(shí)這個(gè)需求實(shí)質(zhì)上只是比單文件讀操作只多了一個(gè)寫操作。其他的就是邏輯稍微繞一下
- 怎么同時(shí)操作多個(gè)文件
- 然后怎么保存成多個(gè)文件
肯定是不能一個(gè)文件一個(gè)文件的去操作,太麻煩了。說下我的實(shí)現(xiàn)思路:
- 把文件放在一個(gè)文件夾內(nèi)
- 獲取這個(gè)文件夾內(nèi)所有的文件名,拼接成文件路徑
- 然后創(chuàng)建一個(gè)空的新文件夾,用新的空文件夾加上原始的文件名拼接成新的路徑然后寫入進(jìn)去
下面上代碼:
import os
# 初始的文件夾路徑
filePath = "/Users/xxxxxxxx/Desktop/fileDocument"
# 存放新文件的空白文件夾
newFilePath = "/Users/xxxxxxxx/Desktop/newFileDocument"
# 獲取文件夾下所有文件名
fileNames = os.listdir(filePath)
for file in fileNames:
# 如果當(dāng)前的文件名包含了'txt',就當(dāng)它是正確的文件(并不嚴(yán)謹(jǐn))
if file.find("txt") >= 0:
# 拼接成我們要讀取的完整路徑
fileFullPath = filePath + "/" + file
# open 函數(shù) 默認(rèn)是 'r'類型 ,
singleFile = open(fileFullPath)
# 轉(zhuǎn)換成list數(shù)據(jù)
singleFile_list = singleFile.readlines()
tempIndex = 0
for index in range(len(singleFile_list)):
temp = singleFile_list[index]
result = temp.find("min") == 0
if result:
tempIndex = index
break
# 拼接新的文件路徑
newSingleFileFullPath = newFilePath + "/" + file
# 以 w 方式打開新的空白文件
newFile = open(newSingleFileFullPath, 'w')
for index in range(len(singleFile_list)):
if index > tempIndex:
# 寫入tempindex行之后的數(shù)據(jù)
newFile.writelines(singleFile_list[index])
newFile.close()
上面的代碼其實(shí)沒啥要介紹的,就是一個(gè)for循環(huán)然后邏輯和單個(gè)文件讀操作一樣,只是多了個(gè)寫操作。
End
這只是自己因緣巧合寫的一些簡單的實(shí)現(xiàn),并沒有去系統(tǒng)的學(xué)習(xí)Python,好多API不了解,可能這種處理不是很好,沒注重性能,沒多線程。等以后深入學(xué)習(xí)了再優(yōu)化。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 在區(qū)塊鏈智能合約開發(fā)中的應(yīng)用與實(shí)踐小結(jié)
Python作為一種廣泛應(yīng)用的編程語言,在區(qū)塊鏈智能合約開發(fā)中扮演著重要角色,通過使用Python框架如Brownie和Web3.py,開發(fā)者可以輕松編寫和部署智能合約,感興趣的朋友一起看看吧2024-09-09
Python中的sys.stdout.write實(shí)現(xiàn)打印刷新功能
今天小編就為大家分享一篇Python中的sys.stdout.write實(shí)現(xiàn)打印刷新功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
使用Python做定時(shí)任務(wù)及時(shí)了解互聯(lián)網(wǎng)動(dòng)態(tài)
這篇文章主要介紹了使用Python做定時(shí)任務(wù)及時(shí)了解互聯(lián)網(wǎng)動(dòng)態(tài),需要的朋友可以參考下2019-05-05
python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF
我們學(xué)習(xí)編程,在學(xué)習(xí)的時(shí)候,會(huì)有想把有用的知識(shí)點(diǎn)保存下來,我們可以把知識(shí)點(diǎn)的內(nèi)容爬下來轉(zhuǎn)變成pdf格式,方便我們拿手機(jī)可以閑時(shí)翻看,是很方便的,本文就介紹一下如何實(shí)現(xiàn)2021-06-06
python數(shù)據(jù)庫編程 ODBC方式實(shí)現(xiàn)通訊錄
這篇文章主要為大家詳細(xì)介紹了python數(shù)據(jù)庫編程,ODBC方式實(shí)現(xiàn)通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03

