最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中存取文件的4種不同操作

 更新時間:2018年07月02日 16:27:41   作者:小詹學Python  
這篇文章主要給大家介紹了關(guān)于Python中存取文件的4種不同操作的相關(guān)資料,分別包括Python內(nèi)置方法、numpy模塊方法、os模塊方法以及csv模塊方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言:

最近開始學習tensorflow框架,選修課讓任選一種框架實現(xiàn)mnist手寫數(shù)字的識別分類。小詹也就隨著大流選擇了 tf 框架,跟著教程邊學邊做,小詹用了不同的神經(jīng)網(wǎng)絡(luò)實現(xiàn)了識別分類,其中有一個步驟是將訓練過程得到的模型進行保存,在之后的測試中加載并使用該模型。想到這種先保存再加載調(diào)用的過程,之前很多地方都遇到過呀,最簡單常用的就是python中文件的存取哇!具體如下。

(PS:雖然我知道技術(shù)文章太長,耐心看完的人很少,曝光率和點贊率會下降,更不會有什么收益,但是還是想記錄下自己學習過程中的一些筆記,以后自己或者別人查起來方便些?。?/p>

方法預覽

●Python內(nèi)置方法

●numpy模塊方法

●os模塊方法

●csv模塊方法

Python內(nèi)置方法

在不需要借助任何外界庫的前提下,python內(nèi)置方法其實也可以完成我們需要的文件存取任務(wù),這里主要介紹幾種python內(nèi)置方法的使用方式,最后再給出一個實際案例展示:

1、open()方法

file object = open(file_name [, access_mode][, buffering])

該方法意義在于按照指定模式打開文件,其中,各個參數(shù)的含義如下:

file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。

access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數(shù)是非強制的,默認文件訪問模式為只讀(r)。常用文件訪問模式見下圖(來源于網(wǎng)絡(luò))

buffering:  如果buffering的值被設(shè)為0,就不會有寄存。如果buffering的值取1,訪問文件時會寄存行。如果將buffering的值設(shè)為大于1的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負值,寄存區(qū)的緩沖大小則為系統(tǒng)默認。

2、close()方法

fileObject.close()

File 對象的 close()方法刷新緩沖區(qū)里任何還沒寫入的信息,并關(guān)閉該文件,這之后便不能再進行寫入。當一個文件對象的引用被重新指定給另一個文件時,Python 會關(guān)閉之前的文件。用 close()方法關(guān)閉文件是一個很好的習慣。

3、write ()方法

fileObject.write(string)

write()方法可將任何字符串寫入一個打開的文件。需要重點注意的是,Python字符串可以是二進制數(shù)據(jù),而不是僅僅是文字。write()方法不會在字符串的結(jié)尾添加換行符('\n');被傳遞的參數(shù)是要寫入到已打開文件的內(nèi)容。

4、read () 方法 

fileObject.read([count])read()

方法從一個打開的文件中讀取一個字符串。需要重點注意的是,Python字符串可以是二進制數(shù)據(jù),而不是僅僅是文字。被傳遞的參數(shù)是要從已打開文件中讀取的字節(jié)計數(shù)。該方法從文件的開頭開始讀入,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內(nèi)容,很可能是直到文件的末尾。

5、舉例分析

一般情況,建議小伙伴們使用with ...as...寫法,這種會在執(zhí)行完代碼塊后自動close,既可以簡化程序,又可以避免自己粗心或者其他原因造成的不必要錯誤,下面給出一個實際案例。

#先用open方法打開(不存在則創(chuàng)建)一個文件,
#write方法寫入內(nèi)容,這里with寫法不用手動close
#注意這里是模式‘a(chǎn)',意味著寫入內(nèi)容不覆蓋已有內(nèi)容
with open('test.txt','a') as file_test:
 file_test.write('小詹是個美男子!\n')
 file_test.write('請關(guān)注公眾號【小詹學python】!\n') 
#注意利用read方法讀取內(nèi)容,模式要設(shè)置為可讀模式
#read()方法不帶參數(shù),表示默認讀取最長內(nèi)容
with open('test.txt','r') as file_test:
 str = file_test.read()
 print(str)

輸出結(jié)果會在目錄下多出一個test.txt文件,并讀取后輸出所有內(nèi)容,下圖為執(zhí)行了三次的結(jié)果,說明模式‘a'不會覆蓋已有內(nèi)容(重要的事情說三遍?。?/p>

numpy模塊方法

這里主要介紹numpy模塊中的兩個常用方法,用于保存讀取數(shù)據(jù)。

np.loadtxt(filename, dtype=int, delimiter=' ')
np.savetxt(filename, a, fmt="%d", delimiter=",")

其中,filename為要保存或讀取的文件名,a為存取的內(nèi)容,delimiter為分隔符號。這個使用很簡單,代碼如下:

import numpy as np

a=np.arange(0,10,0.5).reshape(4,-1)
#改為保存為整數(shù),以逗號分隔
np.savetxt("a.txt",a,fmt="%d",delimiter=",")
#load時也要指定為逗號分隔
b = np.loadtxt("a.txt",delimiter=",")
print('b=\n',b)

其運行結(jié)果,創(chuàng)建了一個名為’a.txt‘ 的文件,保存了數(shù)組,并print打印出來讀取結(jié)果,如下圖:

os模塊方法

python中的os模塊很強大,提供了許多文件處理操作的方法。以下列舉出常用的幾種方法。

1、os.open()

os.open(file, flags[, mode]);

其中,參數(shù)含義為:

file -- 要打開的文件

flags -- 該參數(shù)可以是以下選項,多個使用 "|" 隔開:

  • os.O_RDONLY: 以只讀的方式打開
  • os.O_WRONLY: 以只寫的方式打開
  • os.O_RDWR : 以讀寫的方式打開
  • os.O_NONBLOCK: 打開時不阻塞
  • os.O_APPEND: 以追加的方式打開
  • os.O_CREAT: 創(chuàng)建并打開一個新文件
  • os.O_TRUNC: 打開一個文件并截斷它的長度為零(必須有寫權(quán)限)
  • os.O_EXCL: 如果指定的文件存在,返回錯誤
  • os.O_SHLOCK: 自動獲取共享鎖
  • os.O_EXLOCK: 自動獲取獨立鎖
  • os.O_DIRECT: 消除或減少緩存效果
  • os.O_FSYNC : 同步寫入
  • os.O_NOFOLLOW: 不追蹤軟鏈接

2、os.rename(current_name,new_name)方法用于更改文件名稱

3、os.remove(filename)方法用于刪除指定文件

4、os.mkdir('newdir')方法用于創(chuàng)建單層目錄,如果該目錄已存在會拋出異常

5、os.chdir('newdir')方法用于改變當前工作目錄

6、os.getcwd()方法獲取當前工作目錄

7、os.write(fd,str)向指定文件寫入內(nèi)容,注意str要轉(zhuǎn)換成byte

這里注意針對內(nèi)容的寫入舉例,注意str要轉(zhuǎn)換成byte,否則會報錯(a bytes-like object is required, not ‘str’)!

import os
# # 打開文件
fd = os.open("f1.txt",os.O_RDWR|os.O_CREAT)
# # 寫入字符串
line = "this is xiaozhan"
b = str.encode(line)
os.write(fd,b)
# #直接寫str報錯:a bytes-like object is required, not ‘str'
os.close(fd)
#以可讀模式打開
fd = os.open("f1.txt",os.O_RDWR)
ret = os.read(fd,16)
print(ret)
os.close(fd)
print('finish close')
# os.remove('f1.txt')

運行結(jié)果如下:

csv模塊方法

和前幾種方法一樣,主要是讀取和寫入兩個部分。主要依靠csv.reader(),csv.writer()和writerow()方法。和前邊幾種大同小異,這里直接代碼中講解基礎(chǔ)的使用方式。

import csv

with open('l.csv', 'w',newline='') as csvfile:
 #csv.writer()方法創(chuàng)建
 eWriter = csv.writer(csvfile)
 #用writerow()方法逐行寫入
 eWriter.writerow(['ID', '名字', '粉絲數(shù)量'])
 eWriter.writerow(['xiaoxiaozhantongxue','小詹學python',15000])
 eWriter.writerow(['xiaoxiaozhantongxue','小詹學python',15000])
 eWriter.writerow(['xiaoxiaozhantongxue','小詹學python',15000])

#打開文件,用with打開可以不用去特意關(guān)閉file了,python3不支持file()打開文件,只能用open()
with open('l.csv','r') as csvfile:
 #讀取csv文件,返回的是迭代類型
 read = csv.reader(csvfile)
 for i in read:
  print(i)

運行結(jié)果如下圖:

以上就是本次整理的內(nèi)容了,方便自己查閱也希望對各位讀者有一丟丟用噢!文章太長,耐心看到這的,我得給你點個贊,送你一個么么噠。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python?scipy利用快速傅里葉變換實現(xiàn)濾波

    Python?scipy利用快速傅里葉變換實現(xiàn)濾波

    這篇文章主要為大家詳細介紹了Python?scipy如何利用快速傅里葉變換實現(xiàn)濾波,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • 詳解pyqt5的UI中嵌入matplotlib圖形并實時刷新(挖坑和填坑)

    詳解pyqt5的UI中嵌入matplotlib圖形并實時刷新(挖坑和填坑)

    這篇文章主要介紹了詳解pyqt5的UI中嵌入matplotlib圖形并實時刷新(挖坑和填坑),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 基于django和dropzone.js實現(xiàn)上傳文件

    基于django和dropzone.js實現(xiàn)上傳文件

    這篇文章主要介紹了基于django和dropzone.js實現(xiàn)上傳文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • keras打印loss對權(quán)重的導數(shù)方式

    keras打印loss對權(quán)重的導數(shù)方式

    這篇文章主要介紹了keras打印loss對權(quán)重的導數(shù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python 通過爬蟲實現(xiàn)GitHub網(wǎng)頁的模擬登錄的示例代碼

    Python 通過爬蟲實現(xiàn)GitHub網(wǎng)頁的模擬登錄的示例代碼

    這篇文章主要介紹了Python 通過爬蟲實現(xiàn)GitHub網(wǎng)頁的模擬登錄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 詳解pyqt中解決國際化tr()函數(shù)不起作用的問題

    詳解pyqt中解決國際化tr()函數(shù)不起作用的問題

    本文主要介紹了pyqt中解決國際化tr()函數(shù)不起作用的問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python?playwrigh框架入門安裝使用

    python?playwrigh框架入門安裝使用

    這篇文章主要為大家介紹了python?playwrigh框架入門的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • python將二維數(shù)組升為一維數(shù)組或二維降為一維方法實例

    python將二維數(shù)組升為一維數(shù)組或二維降為一維方法實例

    在實際應用的過程中,遇到列表或是數(shù)組的維數(shù)不同,需要變換的問題,如二維列表/數(shù)組變成了一維列表/數(shù)組,下面這篇文章主要給大家介紹了關(guān)于python將二維數(shù)組升為一維數(shù)組或二維降為一維的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python 實現(xiàn)二叉查找樹的示例代碼

    Python 實現(xiàn)二叉查找樹的示例代碼

    這篇文章主要介紹了Python 實現(xiàn)二叉查找樹的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 在Django中使用ElasticSearch

    在Django中使用ElasticSearch

    這篇文章主要介紹了在Django中使用ElasticSearch,Elasticsearch是基于Lucene庫的搜索引擎。它提供了具有HTTP?Web界面和無模式JSON文檔的分布式,多租戶功能的全文本搜索引擎,下面詳細內(nèi)容,需要的朋友可以參考一下
    2022-01-01

最新評論

乌什县| 长泰县| 吉首市| 安乡县| 乌鲁木齐县| 楚雄市| 巴塘县| 青阳县| 房产| 墨江| 韶关市| 吉林省| 龙山县| 墨脱县| 安新县| 浪卡子县| 民权县| 滨州市| 五华县| 贵南县| 昭觉县| 大兴区| 新巴尔虎右旗| 娄烦县| 肥西县| 皮山县| 沙雅县| 韶山市| 新昌县| 习水县| 越西县| 太白县| 石林| 济源市| 岢岚县| 新津县| 武义县| 龙岩市| 桑植县| 孝昌县| 聊城市|