txt、Csv、Excel、JSON、SQL文件讀取(Python)
txt文件讀寫
創建一個txt文件
f=open(r'text.txt','r',encoding='utf-8')
s=f.read()
f.close()
print(s)
open( )是打開文件的方法
'text.txt’文件名 在同一個文件夾下所以可以省略路徑
如果不在同一個文件夾下 ‘xxx/xxx/text.txt’ 文件名前加路徑
encoding:設置字符編碼
read( )是讀取文件內容
close( )是關閉文件
with
open( )函數方法打開文件讀取文件內容時,如果不關閉文件,將無法對該文件進行修改。當打開文件并寫入文件內容后,不關閉文件會造成寫入的內容不能保存。
在Python語言中,提供了with與open( )函數方法搭配使用
通過with與open( )函數搭配使用無須再去書寫close( )函數方法
with open(r'text.txt','r',encoding='utf-8') as f:s=f.read()
print(s)
寫入
with open(r'text.txt','w') as f:f.write('qwertyuiop')
寫入多行
with open(r'text.txt','w') as f:text=['asdfghjk\n','xcvbnmrtyui\n','123456789\n']f.writelines(text)
open(r’text.txt’,‘w’)函數中,'w’參數意為寫入,會將文件原有的內容進行覆蓋
文件打開模式
- r 只讀 只讀默認模式
- w 只寫 在原文件寫,覆蓋原文件
- a 只寫 不覆蓋原文件,末尾追加
- wb 寫入 以二進制形式寫入,保存圖片時使用
- r+ 讀寫 在原文件寫,覆蓋原文件
- w+ 讀寫 在原文件寫,覆蓋原文件
- a+ 讀寫 不覆蓋原文件,末尾追加
CSV文件讀寫
read_csv( )
讀取當前目錄下的text.csv
import pandas as pd
a=pd.read_csv(r'text.csv')
print(a)
設置字段
import pandas as pd
a=pd.read_csv(r'text.csv',names=['id','name'])
print(a)
指定相應的索引列
import pandas as pd
a=pd.read_csv(r'text.csv',names=['id','name'],index_col='id')
print(a)
import pandas as pd
a=pd.read_csv(r'text.csv',names=['id','name'],index_col=0)
print(a)
獲取指定列
import pandas as pd
a=pd.read_csv(r'text.csv',names=['id','name'],usecols=[0])
print(a)
b=pd.read_csv(r'text.csv',names=['id','name'],usecols=['id'])
print(b)
寫入
to_csv( )
import pandas as pd
data={'id':['1','2','3'],'name':['gh','jk','ty']}
a=pd.DataFrame(data)
a.to_csv(r'text.csv')
設置寫入列
import pandas as pd
data={'id':['1','2','3'],'name':['gh','jk','ty']}
a=pd.DataFrame(data)
a.to_csv(r'text.csv',columns=['id'])
設置寫入模式
mode w為寫(覆蓋) a為追加
import pandas as pd
data={'id':['1','2','3'],'name':['gh','jk','ty']}
a=pd.DataFrame(data)
a.to_csv(r'text.csv')
a.to_csv(r'text.csv',mode='a')
是否寫入列名字段
header
import pandas as pd
data={'id':['1','2','3'],'name':['gh','jk','ty']}
a=pd.DataFrame(data)
a.to_csv(r'text.csv')
a.to_csv(r'text.csv',mode='a',header=False)
第二次寫入不寫入列名
刪除索引
index=None
import pandas as pd
data={'id':['1','2','3'],'name':['gh','jk','ty']}
a=pd.DataFrame(data)
a.to_csv(r'text.csv',index=None)
a.to_csv(r'text.csv',mode='a',header=False,index=None)
Excel文件讀寫
read_excel( )
參數:
sheet_name='name’為讀取的分表名,可以寫表名、位置下標。
index_col為指定相應的索引列,為字段名或者字段列表下標。
usecols為獲取指定列
names為設置列字段
header為用哪一行做字段名
nrows為指定獲取的行數
skiprows為跳過特定行,skipfooter跳過末尾n行
import pandas as pd
a=pd.read_excel(r'text.xlsx')
print(a)
選擇表
sheet_name
新建一個表
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=1)
print(a)
設置索引列
index_col
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,index_col=[0])
print(a)
獲取指定列
usecols
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,usecols=[0])
print(a)
設置列字段
names
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,names=['ID','NAME','CLASS'])
print(a)
指定某行為字段名
header
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,header=1)
print(a)
設置獲取行數
nrows
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,nrows=2)
print(a)
跳過n行
skiprows 跳過前n行
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,skiprows=1)
print(a)
skipfooter跳過末尾n行
import pandas as pd
a=pd.read_excel(r'text.xlsx',sheet_name=0,skipfooter=3)
print(a)
寫入
import pandas as pd
data={'id':[1,2,3,4],'name':['A','B','C','D']}
a=pd.DataFrame(data)
a.to_excel(r'text.xlsx')
寫入多表
import pandas as pd
data={'id':[1,2,3,4],'name':['A','B','C','D']}
a=pd.DataFrame(data)
writer = pd.ExcelWriter(r'text.xlsx')
a.to_excel(writer,sheet_name='1')
a.to_excel(writer,sheet_name='2')
writer.save()
writer.close()
寫入新分表
import pandas as pd
import openpyxl
book = openpyxl.load_workbook(r'text.xlsx')
writer=pd.ExcelWriter(r'text.xlsx')
writer.book=book
writer.sheets=dict((ws.title,ws) for ws in book.worksheets)
data={'id':[5,2,8,4],'name':['H','B','C','D']}
a=pd.DataFrame(data)
a.to_excel(writer,sheet_name="3")
writer.save()
writer.close()
JSON文件讀寫
read_json()
import pandas as pd
a=pd.read_json(r'text.json',encoding='utf8')
print(a)
序列化
import pandas as pd
a=pd.read_json(r'text.json',encoding='utf8')
b=pd.json_normalize(a.data)
print(a)
print(b)
寫入
to_json( )
force_ascii為數據編碼格式,默認為True,中文以Unicode形式寫入,如果為False,中文以ANSI形式寫入。
import pandas as pd
data={'id':[1,2,3],'name':['a','b','c']}
a=pd.DataFrame(data)
a.to_json('text.json',force_ascii=False)
SQL文件讀取
import pymysql
con = pymysql.connect(host="127.0.0.1",port=3306,user='root',password='123456',db='test03',charset='utf8'
)
# 創建游標
cursor=con.cursor()
# 執行sql語句
cursor.execute("select * from test")
# 解釋全部返回結果
res=cursor.fetchall()
print(res)
con.close()
Pandas讀取MySQL數據庫內容
import pymysql
import pandas as pd
con = pymysql.connect(host="127.0.0.1",port=3306,user='root',password='123456',db='test03',charset='utf8'
)
sql="select * from test"
pd=pd.read_sql_query(sql,con)
print(pd)