Python保存數(shù)據(jù)到文件的實(shí)現(xiàn)方式
IO(Input/Output)是指計(jì)算機(jī)與外部環(huán)境之間的數(shù)據(jù)交換。Python中的IO操作分為文件IO和網(wǎng)絡(luò)IO兩種。
文件IO:Python提供了內(nèi)置的文件對(duì)象來(lái)實(shí)現(xiàn)文件IO操作。文件對(duì)象是通過(guò)內(nèi)置的open()函數(shù)創(chuàng)建的,它可以用于讀取、寫(xiě)入、修改文件。
網(wǎng)絡(luò)IO:Python中通過(guò)socket模塊支持網(wǎng)絡(luò)IO操作。使用socket模塊,可以創(chuàng)建TCP/UDP套接字來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信。
Python中還提供了許多高級(jí)IO庫(kù),如:io、pickle、json等,它們能夠方便地對(duì)數(shù)據(jù)進(jìn)行序列化和反序列化。
此外,Python還支持標(biāo)準(zhǔn)輸入輸出(stdin/stdout),可以與操作系統(tǒng)進(jìn)行交互,實(shí)現(xiàn)命令行輸入輸出操作。
方法一:open函數(shù)
open函數(shù)是Python內(nèi)置函數(shù)之一,用于打開(kāi)文件并返回文件對(duì)象,可以用于讀取或?qū)懭胛募?/p>
它的常用語(yǔ)法是:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數(shù)解析:
- file表示要打開(kāi)的文件名(包括路徑),
- mode表示打開(kāi)文件的模式,默認(rèn)為只讀模式(‘r’)。對(duì)于寫(xiě)入模式,可以使用’w’、‘x’、'a’等方式,分別表示覆蓋寫(xiě)入、創(chuàng)建新文件并寫(xiě)入、在文件末尾添加內(nèi)容等。
- buffering表示緩沖策略,默認(rèn)為使用系統(tǒng)默認(rèn)緩沖機(jī)制,
- encoding表示文件編碼方式,
- errors表示編碼錯(cuò)誤時(shí)的處理方式。
- newline表示換行符的轉(zhuǎn)換策略,
- closefd表示是否在文件關(guān)閉時(shí)同時(shí)關(guān)閉文件描述符,
- opener表示自定義開(kāi)啟文件的方式。
#使用with open()新建對(duì)象f
with open('file.txt','w',encoding='utf-8') as f:
for i in comments:
#寫(xiě)入數(shù)據(jù),文件保存在上面指定的目錄,加\n為了換行更方便閱讀
f.write(i+'\n')
方法二:numpy
NumPy是Python科學(xué)計(jì)算中最重要的模塊之一。
它提供了一個(gè)非常靈活的數(shù)組對(duì)象,可以方便地處理數(shù)值數(shù)據(jù)。
NumPy還提供了高效的矩陣運(yùn)算、快速的傅里葉變換等等。
# 導(dǎo)入NumPy模塊
import numpy as np
# 創(chuàng)建NumPy數(shù)組對(duì)象并填充數(shù)據(jù)
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 調(diào)用NumPy提供的savetxt()函數(shù)將數(shù)組數(shù)據(jù)寫(xiě)入文件中
np.savetxt('output.txt', arr)
# savetxt()函數(shù)有很多可選參數(shù)來(lái)控制格式、精度等選項(xiàng)。例如,可以使用delimiter參數(shù)設(shè)置分隔符,使用fmt參數(shù)設(shè)置輸出格式
np.savetxt('output.txt', arr, delimiter=',', fmt='%d')
方法三:csv
Python的csv模塊是一個(gè)用于讀寫(xiě)CSV(Comma-Separated Values)格式文件的標(biāo)準(zhǔn)庫(kù)。
CSV格式常用于大量數(shù)據(jù)的存儲(chǔ)和交換,例如計(jì)算機(jī)數(shù)據(jù)、表格數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)等等。
import csv
# 打開(kāi)文件
with open('data.csv', 'w', newline='') as file:
# 創(chuàng)建writer對(duì)象
writer = csv.writer(file)
# 寫(xiě)入一行數(shù)據(jù)
writer.writerow(['姓名', '年齡', '性別'])
# 寫(xiě)入多行數(shù)據(jù)
rows = [
['張三', 20, '男'],
['李四', 22, '女'],
['王五', 18, '男'],
]
writer.writerows(rows)
方法四:DataFrame
pandas是一個(gè)用于數(shù)據(jù)分析的Python庫(kù),其中最主要的數(shù)據(jù)結(jié)構(gòu)是DataFrame。
DataFrame類(lèi)中提供了多個(gè)方法用于寫(xiě)入數(shù)據(jù)到文件中, to_csv()將DataFrame寫(xiě)入CSV文件、to_excel()DataFrame寫(xiě)入Excel文件、to_json()方法將DataFrame轉(zhuǎn)換為JSON格式數(shù)據(jù),這些方法均提供多個(gè)參數(shù)可供使用,如控制輸出格式、數(shù)據(jù)類(lèi)型、缺失值處理等,詳見(jiàn)pandas官方文檔。
to_csv()方法:將DataFrame寫(xiě)入CSV文件
import pandas as pd
# 創(chuàng)建一個(gè)DataFrame
data = {'name':['Tom', 'Jack', 'Steve', 'Ricky'], 'age':[28, 34, 29, 42]}
df = pd.DataFrame(data)
# 將DataFrame寫(xiě)入CSV文件
df.to_csv('output.csv', index=False)
to_excel()方法:將DataFrame寫(xiě)入Excel文件
import pandas as pd
# 創(chuàng)建一個(gè)DataFrame
data = {'name':['Tom', 'Jack', 'Steve', 'Ricky'], 'age':[28, 34, 29, 42]}
df = pd.DataFrame(data)
# 將DataFrame寫(xiě)入Excel文件
df.to_excel('output.xlsx', index=False)
方法五:codecs
Python中的codecs模塊提供了一些編碼和解碼功能,可以幫助我們?cè)谧x寫(xiě)文件時(shí)處理不同字符集的問(wèn)題。
codecs模塊還提供了許多其他的函數(shù),如open()、encode()、decode()、lookup()等等,可用于處理各種常見(jiàn)的編碼方式,如UTF-8、ASCII等等。
import codecs #或者io,使用哪種包無(wú)所謂
# 代碼使用`codecs.open()`函數(shù)打開(kāi)文件,第一個(gè)參數(shù)是文件路徑,第二個(gè)參數(shù)指定文件打開(kāi)模式,`w`表示寫(xiě)入,`r`表示讀取。第三個(gè)參數(shù)是指定文件編碼,這里是UTF-8編碼。
with codecs.open('your_file.txt', 'r', 'utf-8') as f:
f.write('This method is prior')
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于對(duì)python中self的深入理解
self代表類(lèi)的實(shí)例,而非類(lèi),下面這篇文章主要給大家介紹了關(guān)于對(duì)python中self的深入理解,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Python標(biāo)準(zhǔn)庫(kù)datetime?date模塊的詳細(xì)介紹
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)datetime?date模塊的詳細(xì)介紹,datetime是Python提供的操作日期和時(shí)間的標(biāo)準(zhǔn)庫(kù),主要有datetime.date模塊、datetime.time模塊及datetime.datetime模塊2022-07-07
python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程
這篇文章主要為大家介紹了python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
mysql 之通過(guò)配置文件鏈接數(shù)據(jù)庫(kù)
這篇文章主要介紹了mysql 之通過(guò)配置文件鏈接數(shù)據(jù)庫(kù)的相關(guān)資料,主要是一個(gè)單例餓漢式的獲得數(shù)據(jù)庫(kù)連接方法工具類(lèi)的實(shí)現(xiàn),需要的朋友可以參考下2017-08-08
Python如何將JavaScript轉(zhuǎn)換為json
文章介紹了如何使用Python的re模塊將JavaScript代碼轉(zhuǎn)換為JSON格式,首先,使用正則表達(dá)式匹配并替換JavaScript代碼中的數(shù)字,確保它們被雙引號(hào)括起來(lái),然后,使用另一個(gè)正則表達(dá)式匹配并替換JavaScript代碼中的鍵值對(duì),確保鍵和值都被雙引號(hào)括起來(lái)2025-02-02
python 實(shí)現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法
這篇文章主要介紹了python 實(shí)現(xiàn)創(chuàng)建文件夾和創(chuàng)建日志文件的方法,文中給大家介紹了python 讀寫(xiě)創(chuàng)建文件文件夾的方法 ,需要的朋友可以參考下2019-07-07
一篇文章徹底弄懂Python中的if?__name__?==?__main__
在Python當(dāng)中如果代碼寫(xiě)得規(guī)范一些,通常會(huì)寫(xiě)上一句if '__name__'=='__main__:'作為程序的入口,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章徹底弄懂Python中的if?__name__?==?__main__的相關(guān)資料,需要的朋友可以參考下2022-12-12

