python讀寫json文件
『壹』 python中json處理
python中json文件處理涉及的四個函數json.loads()、json.mps()、json.load()、json.mp()。
1)json.mps()
將一個Python數據類型dict進行json格式的編碼(字典->字元串)
eg:
age_dict = {'age1':'12', 'age2':'15'}
json_info = json.mps(age_dict)
print("json_info = {}".format(json_info))
print("json_info type = {}".format(type(json_info)))
2)json.loads()
將json格式數據轉換為dict(字元串->字典)
json_age ='{"age1": "12", "age2": "15"}'
dict_age = json.loads(json_info)
print("json_age = {}".format(json_age))
print("dict_age type = {}".format(str(type(dict_age))))
3)json.load()
讀取文件,將里json格式字元串轉化為dict
with open(test.json, 'r') as file:
contents = json.load(file)
print(contents)
4)json.mp()
將dict類型轉換為json格式字元串,存入文件
number = [1, 2, 3, 5]
file = 'number.json'
with open(file , 'w') as file:
json.mp(number, file)
『貳』 Python怎麼讀寫json格式文件
以下示例展示基於Python3.x的json文件的讀寫:
defjson_basic():
"""json基本操作"""
importjson
data={
"ID":1,
"課程":"Python",
"機構":"優品課堂",
"單價":200.00
}
json_str=json.mps(data)
print(json_str)
json_data=json.loads(json_str)
print(json_data)
defjson_write_file():
"""json操作文件"""
importjson
data={
"ID":1,
"課程":"Python",
"機構":"優品課堂",
"單價":200.00
}
withopen('data.json','w',encoding='utf8')asf:
json.mp(data,f)
『叄』 Python怎麼讀寫json格式文件
importjson
#read
f=open('x.json','r')
s=f.read()
f.close()
o=json.loads(s)
#write
o['name']='xx'
s=json.mps(o)
f=open('y.json','w')
f.write(s)
f.close()
『肆』 python怎麼讀取json文件內容
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網路傳輸速率)。
JSON在python中分別由list和dict組成。
這是用於序列化的兩個模塊:
json: 用於字元串和python數據類型間進行轉換
pickle: 用於python特有的類型和python的數據類型間進行轉換
Json模塊提供了四個功能:mps、mp、loads、load
pickle模塊提供了四個功能:mps、mp、loads、load
json mps把數據類型轉換成字元串 mp把數據類型轉換成字元串並存儲在文件中 loads把字元串轉換成數據類型 load把文件打開從字元串轉換成數據類型
json是可以在不同語言之間交換數據的,而pickle只在python之間使用。json只能序列化最基本的數據類型,josn只能把常用的數據類型序列化(列表、字典、列表、字元串、數字、),比如日期格式、類對象!josn就不行了。而pickle可以序列化所有的數據類型,包括類,函數都可以序列化。
事例:
mps:將python中的 字典 轉換為 字元串
『伍』 python同時讀寫多個文件暨大型json文件讀取方法
最近處理NLP數據集時,需要一邊讀json文件,一邊向自己創建的txt寫入提取出的對話數據集,即同時讀寫多個文件,本來記得以前在哪看過這波操作的,但時間有點久了,忘了。
又由於新換了mac,win上原有的梯子掛了,這就很離譜,因此也沒法谷歌,只能用網路湊合著查了一番,看看有沒有大佬記錄了這個小tip。但是很遺憾,網上找到的方法都很撈,簡直是海底撈,沒辦法。好在腦子里還有點印象,修修改改總算寫出來了,在此做個記錄,同時也開源方便一下諸位道友。
你是不是覺得我很撈,很菜,連個文件讀寫都不會~
那麼,對不起,諸位,現在,我要起飛了,你以為你是第二層,我是第一層,實際上,我在第五層,且看我寫給你看~
最後,如果有道友對俺的開放域對話數據集感興趣,這個其實也是開源的
數據集鏈接
『陸』 python request/讀寫/上傳文件
python 讀寫文件:
data_json = json.mps(result_r) #json字元串
f =open('E://XXX.txt',"a+") #打開文件,追加+讀寫
f.write(data_json) # data_json 寫入XXX.txt'文件
f.seek(0) # 游標移動到文件開頭
lines = f.read() # 逐行讀入
f.close() #關閉文件
mode 打開的方式(r,w,a,x,b,t,r+,w+,a+,U)
r 以只讀方式打開文件。文件的指針會放在文件的開頭。
w 以寫入方式打開文件。文件存在覆蓋文件,文件不存在創建一個新文件。
a 以追加方式打開文件。如果文件已存在,文件指針放在文件末尾。如果文件不存在,創建新文件並可寫入。
r+ 打開一個文件用於讀寫,文件指針會放在文件的開頭
w+ 打開一個文件用於讀寫,文件存在覆蓋文件,文件不存在創建一個新文件。
a+ 打開一個文件用於讀寫,如果文件已存在,文件指針放在文件末尾。如果文件不存在,創建新文件並可寫入。
記憶方法:記住r讀,w寫,a追加,每個模式後加入+號就變成可讀寫。
f =open('E://xxx.txt',"a+") / f=open(r'E://xxx.txt',mode='a+',encoding='UTF-8')
踩坑1>
沒有加encoding='UTF-8',可能會報如下錯:
import requests # 使用 request函數需導入 request 庫
import json #使用 JSON 函數需要導入 json 庫: import json 。
param ={} #請求body
url ='http://域名/api'
header = {'content-type':'application/json'}
r = requests.post(url,json=param,headers=header) #發送post請求
result_r = r.json() #請求返回的json傳入對象result_r
data_json = json.mps(result_r) #將 Python-result_r對象轉為字元串 json.mps()
文件上傳請求(csv文件)
file_path = "xxx.csv" 文件路徑
uploaddata = {"file":open(file_path, "rb")}
file_upload_result = requests.post(api_URL, files=uploaddata, cookies=cookie)
『柒』 python3 讀excel轉Json文件
from xlrd import *
import json
# 參考1-字典、列表轉JSON:https://www.cnblogs.com/longchang/p/10904850.html
# 參考2-JSON直接保存到文件:https://www.cnblogs.com/miyatest/p/9603897.html
# 從excel讀取數據存放到列表中
def readExcel():
keyData=[] # 定義空List,用於保存讀到的行數據
excelBook=open_workbook("data.xlsx") # 從當前目錄讀取《data.xlsx》文件
table=excelBook.sheet_by_name("data") # 從《data.xlsx》中找名為 data的sheet頁
rowNum=table.nrows # 獲取《data.xlsx》-->data頁中 行數
colNum=table.ncols # 獲取《data.xlsx》-->data頁中 列數
colName=table.row_values(0) # 取第一行數據,即列名,colName 是個List
# print(colName)
if rowNum<=1:
print("沒數據...") # 如果行數<=1,說明沒有數據,因第1行一般定義為列名
else:
for i in range(rowNum-1):
d={} # 定義空字典,用於存放獲取到數據
values=table.row_values(i+1) # 獲取每行的數據,values最終是個List
# print(values)
for x in range(colNum): # 每個列作為字典的一組數據
d[colName[x]]=values[x] # 用colName值作為字典的key,values值作業為字典的value
# print(d)
keyData.append(d) # 讀完一行數據保存到字典,再保存到列表
# print(keyData)
return keyData # 全部數據讀完並保存到列表後,返回
# 列表轉Json
def listToJson():
keyParam=readExcel() # 調用從excel讀取數據的函數,把數據保存到列表
CaseConfig=open("CaseConfig.json", mode="w+") # 創建json文件
CaseConfig.write('{\n"key":') # 往json文件中寫數據,先寫json的格式的{,和模塊名
# 把從excel讀取的數據轉成Json格式保存入 CaseConfig,indent=4是進行格式化,使json排版好看
json.mp(keyParam, CaseConfig, indent=4)
CaseConfig.write('\n}') # 往json文件中寫數據,寫結尾的 },寫前先換行
CaseConfig.close() # 關閉json文件,必要!!
if __name__ == '__main__': # 調試調用
listToJson()
『捌』 python寫入json文件
想要多條相同key的數據添加json中,先將數據存入到字典中,再 append 到列表中。最後存入json中。
這樣子list才會是下圖所示的樣子。