2.0與3.0視頻中介紹瞭如何用Python處理JSON文件和CSV文件
本節擴展一下,讓程序自動判斷讀取的文件是JSON文件還是CSV文件,並進行相應的操作。
以下爲補充內容:
1、CSV文件讀取
import csv
csv.reader()將每行記錄作爲列表返回
2、使用with語句操作文件對象
with open('file_name') as somefile:
for line in somefile:
print(line)
使用with語句,不管在處理文件過程中是否發生異常,都能保證with語句執行完畢後關閉文件,不需要close()語句。
使用with語句代替打開文件、操作文件、關閉文件的操作。
3、os模塊
os模塊提供了與系統、目錄操作相關的功能,不受平臺的限制。
函數 | 含義 |
os.remove() | 刪除文件 |
os.makedirs() | 創建多層目錄 |
os.rmdir() | 刪除單級目錄 |
os.rename() | 重命名文件 |
os.path.isfile() | 判斷是否爲文件 |
os.path_isdir() | 判斷是否爲目錄 |
os.path.join() | 連接目錄,如path1連接path2爲path1/path2 |
os.path.splitext() | 將文件分割成文件名和擴展名,如分割tmp.txt爲tmp和.txt |
以下爲代碼:
1、主函數是通過os模塊的os.path.splitext()判斷擴展名走哪一個分支函數;
2、新建json解碼函數;
3、新建csv解碼函數。
"""
作者:lanxingbudui
日期:2020-02-23
功能:AQI計算
版本:4.0
"""
import json
import csv
import os
def process_json_file(file_path):
"""
解碼json文件
"""
"""
處理文件三步走:1、打開文件;2、處理文件;;3、關閉文件
"""
# f = open(file_path, mode='r', encoding='utf-8')
# city_list = json.load(f)
# return city_list
with open(file_path, mode='r', encoding='utf-8') as f:
city_list = json.load(f)
print(city_list)
def process_csv_file(file_path):
"""
解碼csv文件
"""
with open(file_path, mode='r', encoding='utf-8',newline='') as f:
reader = csv.reader(f)
for row in reader:
print(', '.join(row))
def main():
"""
主函數
"""
file_path = input('請輸入文件名稱:')
file_name, file_ext = os.path.splitext(file_path)
if file_ext == '.json':
# json文件
process_json_file(file_path)
elif file_ext == '.csv':
# csv文件
process_csv_file(file_path)
else:
print('不支持的文件格式!')
if __name__ == '__main__':
main()
效果圖