Python文件讀寫保存操做

記錄下第一次使用Python讀寫文件的過程,雖然很簡單,第一次實現其實也有些注意的事項。

單個文件的讀操做:

咱們先假設一個需求以下:html

  • 讀取一個test.txt文件
  • 刪除指定字符以前的文本

需求明白以後,下面開始動手寫代碼,代碼很簡單。就直接上所有的,細節看註釋:python

import sys

filePath = "/Users/xxxxxx/Desktop/test.txt"
# 打開文件
files = open(filePath, 'r')
# 轉成list
f_list = files.readlines()


tempIndex = 0
# 對f_list 循環 每一個index對應一行數據
for index in range(len(f_list)):
    # temp是獲取一行的數據
    temp = f_list[index]
    # 判斷"test"是否是temp這行數據的首位 若是是首位 result爲true
    result = temp.find("test") == 0

    if result:
        # 若是是首位 這就是咱們要刪除的位置 獲取他的index
        tempIndex = index
        break
# 存放新數據
tempContainer = []

for index in range(len(f_list)):
    if index > tempIndex:
        # tempIndex以前的數據咱們不處理,把tempindex以後的數據存到新的list裏面
        tempContainer.append(f_list[index])
# 這就得到了咱們須要的新數據
print(tempContainer)

以上代碼就完成了需求,很是簡單。有幾個注意點:多線程

  • 直接用open獲取的數據沒法進行處理,因此先轉成能夠處理的數據,好比list或者字典等。
  • python的open和C的相似,有r,r+, w, w+等各類狀態,見具體介紹
open函數的常見操做方式
一、r 打開只讀文件,該文件必須存在。 
二、r+ 打開可讀寫的文件,該文件必須存在。 
三、w 打開只寫文件,若文件存在則文件長度清爲0,即該文件內容會消失。若文件不存在則創建該文件。 
四、w+ 打開可讀寫文件,若文件存在則文件長度清爲零,即該文件內容會消失。若文件不存在則創建該文件。

多文件讀寫保存

假設一個需求以下:app

  • 多個文件都要處理
  • 和上面的test.txt處理方式相似
  • 處理完以後保存到一個新文件夾內

其實這個需求實質上只是比單文件讀操做只多了一個寫操做。其餘的就是邏輯稍微繞一下函數

  • 怎麼同時操做多個文件
  • 而後怎麼保存成多個文件

確定是不能一個文件一個文件的去操做,太麻煩了。說下個人實現思路:性能

  • 把文件放在一個文件夾內
  • 獲取這個文件夾內全部的文件名,拼接成文件路徑
  • 而後建立一個空的新文件夾,用新的空文件夾加上原始的文件名拼接成新的路徑而後寫入進去

下面上代碼:學習

import os

# 初始的文件夾路徑
filePath = "/Users/xxxxxxxx/Desktop/fileDocument"
# 存放新文件的空白文件夾
newFilePath = "/Users/xxxxxxxx/Desktop/newFileDocument"

# 獲取文件夾下全部文件名
fileNames = os.listdir(filePath)

for file in fileNames:
    # 若是當前的文件名包含了'txt',就當它是正確的文件(並不嚴謹)
    if file.find("txt") >= 0:
        # 拼接成咱們要讀取的完整路徑
        fileFullPath = filePath + "/" + file
        # open 函數 默認是 'r'類型 ,
        singleFile = open(fileFullPath)
        # 轉換成list數據
        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行以後的數據
                newFile.writelines(singleFile_list[index])

        newFile.close()

上面的代碼其實沒啥要介紹的,就是一個for循環而後邏輯和單個文件讀操做同樣,只是多了個寫操做。優化

End

這只是本身因緣巧合寫的一些簡單的實現,並無去系統的學習Python,好多API不瞭解,可能這種處理不是很好,沒注重性能,沒多線程。等之後深刻學習了再優化。線程

相關文章
相關標籤/搜索