Python文件讀寫保存操作的示例代碼
記錄下第一次使用Python讀寫文件的過(guò)程,雖然很簡(jiǎn)單,第一次實(shí)現(xiàn)其實(shí)也有些注意的事項(xiàng)。
單個(gè)文件的讀操作:
我們先假設(shè)一個(gè)需求如下:
- 讀取一個(gè)test.txt文件
- 刪除指定字符之前的文本
需求明白之后,下面開(kāi)始動(dòng)手寫代碼,代碼很簡(jiǎn)單。就直接上全部的,細(xì)節(jié)看注釋:
import sys filePath = "/Users/xxxxxx/Desktop/test.txt" # 打開(kāi)文件 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)
以上代碼就完成了需求,非常簡(jiǎn)單。有幾個(gè)注意點(diǎn):
- 直接用open獲取的數(shù)據(jù)無(wú)法進(jìn)行處理,所以先轉(zhuǎn)成可以處理的數(shù)據(jù),比如list或者字典等。
- python的open和C的類似,有r,r+, w, w+等各種狀態(tài),見(jiàn)具體介紹
open函數(shù)的常見(jiàn)操作方式
1、r 打開(kāi)只讀文件,該文件必須存在。
2、r+ 打開(kāi)可讀寫的文件,該文件必須存在。
3、w 打開(kāi)只寫文件,若文件存在則文件長(zhǎng)度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
4、w+ 打開(kāi)可讀寫文件,若文件存在則文件長(zhǎng)度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
多文件讀寫保存
假設(shè)一個(gè)需求如下:
- 多個(gè)文件都要處理
- 和上面的test.txt處理方式類似
- 處理完之后保存到一個(gè)新文件夾內(nèi)
其實(shí)這個(gè)需求實(shí)質(zhì)上只是比單文件讀操作只多了一個(gè)寫操作。其他的就是邏輯稍微繞一下
- 怎么同時(shí)操作多個(gè)文件
- 然后怎么保存成多個(gè)文件
肯定是不能一個(gè)文件一個(gè)文件的去操作,太麻煩了。說(shuō)下我的實(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 方式打開(kāi)新的空白文件 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í)沒(méi)啥要介紹的,就是一個(gè)for循環(huán)然后邏輯和單個(gè)文件讀操作一樣,只是多了個(gè)寫操作。
End
這只是自己因緣巧合寫的一些簡(jiǎn)單的實(shí)現(xiàn),并沒(méi)有去系統(tǒng)的學(xué)習(xí)Python,好多API不了解,可能這種處理不是很好,沒(méi)注重性能,沒(méi)多線程。等以后深入學(xué)習(xí)了再優(yōu)化。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow 1.X遷移至tensorflow2 的代碼寫法
本文主要介紹了tensorflow 1.X遷移至tensorflow2 的代碼寫法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Python實(shí)現(xiàn)國(guó)外賭場(chǎng)熱門游戲Craps(雙骰子)
這篇文章主要介紹了Python實(shí)現(xiàn)國(guó)外賭場(chǎng)熱門游戲Craps(雙骰子)的源碼及運(yùn)行方法,十分簡(jiǎn)單,有需要的小伙伴可以參考下。2015-03-03關(guān)于數(shù)據(jù)分析之滾動(dòng)窗口pandas.DataFrame.rolling方法
Pandas庫(kù)中的rolling方法是數(shù)據(jù)處理中常用的功能,它允許用戶對(duì)數(shù)據(jù)進(jìn)行滾動(dòng)窗口(滑動(dòng)窗口)操作,通過(guò)指定窗口大小,可以使用不同的聚合函數(shù)對(duì)窗口內(nèi)的數(shù)據(jù)進(jìn)行計(jì)算,例如最大值、最小值、平均值、中位數(shù)等,此外,rolling方法還可以計(jì)算方差、標(biāo)準(zhǔn)差、偏度、峰度2024-09-09一文詳解凱撒密碼的原理及Python實(shí)現(xiàn)
凱撒密碼是古羅馬愷撒大帝用來(lái)對(duì)軍事情報(bào)進(jìn)行加密的算法,它采用了替換方法對(duì)信息中的每一個(gè)英文字符循環(huán)替換為字母表序列該字符后面第三個(gè)字符。本文主要為大家講解了凱撒密碼的原理及實(shí)現(xiàn),需要的可以參考一下2022-08-08python文件操作的基礎(chǔ)詳細(xì)講解(write、read、readlines、readline)
使用python來(lái)讀寫文件是非常簡(jiǎn)單的操作,下面這篇文章主要給大家介紹了關(guān)于python文件操作的基礎(chǔ)詳細(xì)資料,包括write、read、readlines、readline等相關(guān)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04python tkinterEntry組件設(shè)置默認(rèn)值方式
使用Tkinter庫(kù)中的Entry組件創(chuàng)建文本輸入框時(shí),可以通過(guò)insert方法在指定位置插入默認(rèn)文本作為提示,結(jié)合使用focus和focusin事件,可以實(shí)現(xiàn)用戶點(diǎn)擊時(shí)清除默認(rèn)文本,以便輸入自定義內(nèi)容2024-09-09Python中的高級(jí)數(shù)據(jù)結(jié)構(gòu)詳解
這篇文章主要介紹了Python中的高級(jí)數(shù)據(jù)結(jié)構(gòu)詳解,本文講解了Collection、Array、Heapq、Bisect、Weakref、Copy以及Pprint這些數(shù)據(jù)結(jié)構(gòu)的用法,需要的朋友可以參考下2015-03-03用python生成mysql數(shù)據(jù)庫(kù)結(jié)構(gòu)文檔
大家好,本篇文章主要講的是用python生成mysql數(shù)據(jù)庫(kù)結(jié)構(gòu)文檔,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01