python-各種文件(txt,xls,csv,sql,二進制文件)讀寫操作、文件類型轉換、數據分析代碼講解

1.文件txt讀寫標準用法

1.1寫入文件

要讀取文件,首先得使用?open()?函數打開文件。
?

file = open(file_path, mode='r', encoding=None)
  • file_path:文件的路徑,可以是絕對路徑或者相對路徑。
  • mode:文件打開模式,'r'?代表以只讀模式打開文件,這是默認值,‘w’表示寫入模式。
  • encoding:文件的編碼格式,像?'utf-8''gbk'?等,默認值是?None

下面寫入文件的示例:

#寫入文件,當open(file_name,'w')時清除文件內容寫入新內容,當open(file_name,'a')時直接在文件結尾加入新內容
file_name = 'text.txt'
try:with open(file_name,'w',encoding='utf-8') as file:file.write("你好!我是老葉愛吃魚")file.write("\n你好呀,老葉,很高興認識你")
except Exception as e:print(f'出錯{e}')

系統會判斷時候會有text.txt文件,沒有的話會創建文件,加入寫入內容,示例ru

1.2讀取文件

下面是讀取文件示例:

#讀取文件
try:with open(file_name,'r',encoding='utf-8') as file:print(file.read())
except Exception as e:print(f'出錯時輸出{e}')
#打印出:你好!我是老葉愛吃魚     你好呀,老葉,很高興認識你
1.2.1?readline()?方法

readline()?方法每次讀取文件的一行內容,返回一個字符串。

# 打開文件
file = open('example.txt', 'r', encoding='utf-8')
# 讀取第一行
line = file.readline()
while line:print(line.strip())  # strip() 方法用于去除行尾的換行符line = file.readline()
# 關閉文件
file.close()
1.2.2?readlines()?方法

readlines()?方法會讀取文件的所有行,并將每行內容作為一個元素存儲在列表中返回。

# 打開文件
file = open('example.txt', 'r', encoding='utf-8')
# 讀取所有行
lines = file.readlines()
for line in lines:print(line.strip())
# 關閉文件
file.close()
1.2.3?迭代文件對象

可以直接對文件對象進行迭代,每次迭代會返回文件的一行內容。

# 打開文件
file = open('example.txt', 'r', encoding='utf-8')
# 迭代文件對象
for line in file:print(line.strip())
# 關閉文件
file.close()

2. 二進制文件讀取

若要讀取二進制文件,需將?mode?參數設置為?'rb'

# 以二進制只讀模式打開文件
with open('example.jpg', 'rb') as file:# 讀取文件全部內容content = file.read()# 可以對二進制數據進行處理,如保存到另一個文件with open('copy.jpg', 'wb') as copy_file:copy_file.write(content)

3. 大文件讀取

對于大文件,不建議使用?read()?方法一次性讀取全部內容,因為這可能會導致內存不足。可以采用逐行讀取或者分塊讀取的方式。

3.1 逐行讀取
# 逐行讀取大文件
with open('large_file.txt', 'r', encoding='utf-8') as file:for line in file:# 處理每行內容print(line.strip())
3.2 分塊讀取
# 分塊讀取大文件
chunk_size = 1024  # 每次讀取 1024 字節
with open('large_file.txt', 'r', encoding='utf-8') as file:while True:chunk = file.read(chunk_size)if not chunk:break# 處理每個數據塊print(chunk)

4.Excel表格文件的讀寫

4.1讀取excel

import xlrd
import xlwt
from datetime import date,datetime# 打開文件
workbook = xlrd.open_workbook(r"D:\python_file\request_files\excelfile.xlsx", formatting_info=False)
# 獲取所有的sheet
print("所有的工作表:",workbook.sheet_names())
sheet1 = workbook.sheet_names()[0]# 根據sheet索引或者名稱獲取sheet內容
sheet1 = workbook.sheet_by_index(0)
sheet1 = workbook.sheet_by_name("Sheet1")# 打印出所有合并的單元格
print(sheet1.merged_cells)
for (row,row_range,col,col_range) in sheet1.merged_cells:print(sheet1.cell_value(row,col))# sheet1的名稱、行數、列數
print("工作表名稱:%s,行數:%d,列數:%d" % (sheet1.name, sheet1.nrows, sheet1.ncols))# 獲取整行和整列的值
row = sheet1.row_values(1)
col = sheet1.col_values(4)
print("第2行的值:%s" % row)
print("第5列的值:%s" % col)# 獲取單元格的內容
print("第一行第一列:%s" % sheet1.cell(0,0).value)
print("第一行第二列:%s" % sheet1.cell_value(0,1))
print("第一行第三列:%s" % sheet1.row(0)[2])# 獲取單元格內容的數據類型
# 類型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
print("第二行第三列的數據類型:%s" % sheet1.cell(3,2).ctype)# 判斷ctype類型是否等于data,如果等于,則用時間格式處理
if sheet1.cell(3,2).ctype == 3:data_value = xlrd.xldate_as_tuple(sheet1.cell_value(3, 2),workbook.datemode)print(data_value)print(date(*data_value[:3]))print(date(*data_value[:3]).strftime("%Y\%m\%d"))

4.2 設置單元格樣式

style = xlwt.XFStyle()    # 初始化樣式
font = xlwt.Font()    # 為樣式創建字體
font.name = name    # 設置字體名字對應系統內字體
font.bold = bold    # 是否加粗
font.color_index = 5    # 設置字體顏色
font.height = height    # 設置字體大小# 設置邊框的大小
borders = xlwt.Borders()
borders.left = 6
borders.right = 6
borders.top = 6
borders.bottom = 6style.font = font    # 為樣式設置字體
style.borders = bordersreturn style

    4.3寫入excel

    writeexcel = xlwt.Workbook()    # 創建工作表
    sheet1 = writeexcel.add_sheet(u"Sheet1", cell_overwrite_ok = True)    # 創建sheetrow0 = ["編號", "姓名", "性別", "年齡", "生日", "學歷"]
    num = [1, 2, 3, 4, 5, 6, 7, 8]
    column0 = ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8"]
    education = ["小學", "初中", "高中", "大學"]# 生成合并單元格
    i,j = 1,0
    while i < 2*len(education) and j < len(education):sheet1.write_merge(i, i+1, 5, 5, education[j], set_style("Arial", 200, True))i += 2j += 1# 生成第一行
    for i in range(0, 6):sheet1.write(0, i, row0[i])# 生成前兩列
    for i in range(1, 9):sheet1.write(i, 0, i)sheet1.write(i, 1, "a1")# 添加超鏈接
    n = "HYPERLINK"
    sheet1.write_merge(9,9,0,5,xlwt.Formula(n + '("https://www.baidu.com")'))# 保存文件
    writeexcel.save("demo.xls")

    5.cvs文件的讀寫操作

    5.1讀取cvs文件

    # 讀取 CSV 文件
    def read_from_csv(file_path):try:with open(file_path, 'r', encoding='utf-8') as csvfile:reader = csv.reader(csvfile)print("讀取到的 CSV 文件內容如下:")for row in reader:print(row)except FileNotFoundError:print(f"錯誤: 文件 {file_path} 未找到!")except Exception as e:print(f"讀取文件時出錯: {e}")

    5.2寫入cvs文件

    # 寫入 CSV 文件
    def write_to_csv(file_path, data):try:with open(file_path, 'w', newline='', encoding='utf-8') as csvfile:writer = csv.writer(csvfile)# 寫入表頭writer.writerow(['Name', 'Age', 'City'])# 寫入數據行for row in data:writer.writerow(row)print(f"數據已成功寫入 {file_path}")except Exception as e:print(f"寫入文件時出錯: {e}")

    6.SQL文件讀取

    import sqlite3
    import pandas as pd# 連接到SQLite數據庫
    conn = sqlite3.connect('example.db')# 讀取數據庫表
    query = "SELECT * FROM table_name"
    data = pd.read_sql(query, conn)
    print(data.head())# 關閉連接
    conn.close()

    7.cvs、xls、txt文件相互轉換

    一般情況下python只會對cvs文件進行數據處理,那么對于很多文件屬于二進制文件不能直接處理,那么需要將二進制轉為cvs文件后才能處理,如xls是二進制文件需要對xls文件轉為cvs文件,操作數據后再轉成xls文件即可

    7.1xls文件轉cvs文件

    import pandas as pddef xls_to_csv(xls_file_path, csv_file_path):try:df = pd.read_excel(xls_file_path)df.to_csv(csv_file_path, index=False)print(f"成功將 {xls_file_path} 轉換為 {csv_file_path}")except Exception as e:print(f"轉換過程中出現錯誤: {e}")# 示例調用
    xls_file = 'example.xls'
    csv_file = 'example.csv'
    xls_to_csv(xls_file, csv_file)

    7.2cvs文件轉xls文件

    import pandas as pddef csv_to_xls(csv_file_path, xls_file_path):try:df = pd.read_csv(csv_file_path)df.to_excel(xls_file_path, index=False)print(f"成功將 {csv_file_path} 轉換為 {xls_file_path}")except Exception as e:print(f"轉換過程中出現錯誤: {e}")# 示例調用
    csv_file = 'example.csv'
    xls_file = 'example.xls'
    csv_to_xls(csv_file, xls_file)

    7.3txt文件轉cvs文件

    import pandas as pddef txt_to_csv(txt_file_path, csv_file_path):try:# 假設 txt 文件以空格分隔,根據實際情況修改 sep 參數df = pd.read_csv(txt_file_path, sep=' ', header=None)df.to_csv(csv_file_path, index=False, header=False)print(f"成功將 {txt_file_path} 轉換為 {csv_file_path}")except Exception as e:print(f"轉換過程中出現錯誤: {e}")# 示例調用
    txt_file = 'example.txt'
    csv_file = 'example.csv'
    txt_to_csv(txt_file, csv_file)

    7.4csv文件轉txt文件

    import pandas as pddef csv_to_txt(csv_file_path, txt_file_path):try:df = pd.read_csv(csv_file_path)df.to_csv(txt_file_path, sep=' ', index=False, header=False)print(f"成功將 {csv_file_path} 轉換為 {txt_file_path}")except Exception as e:print(f"轉換過程中出現錯誤: {e}")# 示例調用
    csv_file = 'example.csv'
    txt_file = 'example.txt'
    csv_to_txt(csv_file, txt_file)

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/bicheng/77057.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77057.shtml
    英文地址,請注明出處:http://en.pswp.cn/bicheng/77057.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Uniapp:確認框

    目錄 一、 出現場景二、 效果展示三、具體使用 一、 出現場景 在項目的開發中&#xff0c;會經常出現刪除數據的情況&#xff0c;如果直接刪除的話&#xff0c;可能會存在誤刪&#xff0c;用戶體驗不好&#xff0c;所以需要增加一個消息提示&#xff0c;提醒用戶是否刪除。 二…

    解密 Vue 打包策略

    1. 總體概述 在現代前端開發中&#xff0c;Vue 已成為流行框架之一&#xff0c;開發者通常使用 webpack、vite 或 vue-cli 來構建項目。可能會困惑&#xff1a; 為什么源碼中的資源引用路徑與打包后實際產出的路徑會不一樣&#xff1f;靜態路徑與動態路徑到底如何正確書寫&am…

    Golang|接口并發測試和壓力測試

    文章目錄 這里出現某些獎品和數據庫中庫存量不一致的問題原因就是在并發的情況下&#xff0c;sync.Map仍然會出現臟寫問題&#xff0c;就是在同時操作下的操作覆蓋問題可以先把數據放到channel里&#xff0c;然后用一個單一的協程負責讀取channel并寫入map

    CentOS下,Xftp中文文件名亂碼的處理方式

    亂碼原因 中文版Windows默認使用GBK編碼&#xff0c;現代Linux發行版&#xff08;如CentOS、Ubuntu等&#xff09;默認使用UTF-8編碼。Windows下正常的編碼&#xff0c;可能在linux下無法識別&#xff0c;例如&#xff1a;Windows的GBK字節0xD6D0被Linux用UTF-8解碼時&#xf…

    解決 Vue 中 input 輸入框被賦值后,無法再修改和編輯的問題

    目錄 需求&#xff1a; 出現 BUG&#xff1a; Bug 代碼復現 解決問題&#xff1a; 解決方法1&#xff1a; 解決方法2 關于 $set() 的補充&#xff1a; 需求&#xff1a; 前段時間&#xff0c;接到了一個需求&#xff1a;在選擇框中選中某個下拉菜單時&#xff0c;對應的…

    【含文檔+PPT+源碼】基于微信小程序的衛生院預約掛號管理系統的設計與實現

    項目視頻介紹&#xff1a; 畢業作品基于微信小程序的衛生院預約掛號管理系統的設計與實現 課程簡介&#xff1a; 本課程演示的是一款基于微信小程序的衛生院預約掛號管理系統的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習…

    【Vue】案例——To do list:

    【Vue】案例——To do list&#xff1a; 一、案例介紹&#xff1a;二、效果展示&#xff08;如圖&#xff09;三、主要功能&#xff1a;四、技術要點&#xff1a;補充&#xff1a;【Vue】Vue模板語法(點擊可跳轉)補充&#xff1a;【Vue】數據綁定&#xff08;單雙向&#xff09…

    導入 .sql 文件到 云服務器上的MySQL中

    導入 .sql 文件到 云服務器上的MySQL中 步驟 1&#xff1a;確保 .sql 文件已上傳到云服務器步驟 2&#xff1a;登錄到云服務器步驟 3&#xff1a;檢查文件是否成功傳輸步驟 4&#xff1a;登錄 MySQL步驟 5&#xff1a;創建空數據庫&#xff08;如果尚未創建&#xff09;步驟 6&…

    我的機器學習之路(初稿)

    文章目錄 一、機器學習定義二、核心三要素三、算法類型詳解1. 監督學習&#xff08;帶標簽數據&#xff09;2. 無監督學習&#xff08;無標簽數據&#xff09;3. 強化學習&#xff08;決策優化&#xff09;(我之后主攻的方向) 四、典型應用場景五、學習路線圖六、常見誤區警示七…

    VueDOMPurifyHTML 防止 ??XSS(跨站腳本攻擊)?? 風險

    VueDOMPurifyHTML 是一個 ??Vue.js 插件??&#xff0c;用于在 v-html 指令中安全地渲染 HTML 內容&#xff0c;防止 ??XSS&#xff08;跨站腳本攻擊&#xff09;?? 風險。 ??作用?? ??解決 v-html 的安全問題?? Vue 的 v-html 會直接渲染原始 HTML&#xff0…

    【數據結構】之散列

    一、定義與基本術語 &#xff08;一&#xff09;、定義 散列&#xff08;Hash&#xff09;是一種將鍵&#xff08;key&#xff09;通過散列函數映射到一個固定大小的數組中的技術&#xff0c;因為鍵值對的映射關系&#xff0c;散列表可以實現快速的插入、刪除和查找操作。在這…

    How AI could empower any business - Andrew Ng

    How AI could empower any business - Andrew Ng References 人工智能如何為任何業務提供支持 empower /?m?pa??(r)/ vt. 授權&#xff1b;給 (某人) ...的權力&#xff1b;使控制局勢&#xff1b;增加 (某人的) 自主權When I think about the rise of AI, I’m reminded …

    微服務的服務調用詳解以及常見解決方案對比

    微服務服務調用詳解 1. 服務調用分類 服務調用根據通信方式、同步性、實現模式可分為以下類型&#xff1a; 按通信協議分類 類型典型協議/框架特點RPC&#xff08;遠程過程調用&#xff09;Dubbo、gRPC、Apache Thrift高性能、二進制協議、強類型定義HTTP/RESTSpring RestTe…

    MySQL:B+樹索引

    InnoDB索引方案 為了使用二分法快速定位具體的目錄項&#xff0c;假設所有目錄項都可以在物理存儲器上連續存儲&#xff0c;有以下問題&#xff1a; InnoDB使用頁為管理存儲空間的基本單位&#xff0c;最多只能保證16KB的連續存儲空間&#xff0c;記錄數據量多可能需要非常大…

    THCON 2025

    Crypto OTPas_ouf 用10個字符異或加密的jpg圖片&#xff0c;通過頭得到key再恢復原圖 Mammoths Personnal Slot Machine 梅森旋轉恢復 from pwn import * from randcrack import RandCrack from tqdm import trange context.log_level errorp remote(74.234.198.209, 33…

    3.8 字符串的常用函數

    重點&#xff1a;字符串的常用函數 #1.測試轉換大小寫 lower:大寫->小寫 upper&#xff1a;小寫->大寫 swapcase&#xff1a;自動將大寫轉小寫小寫轉大寫 print("ABC".lower()) #abcprint("abc".upper()) #ABCprint…

    Docker:SkyWalking 鏈路追蹤的技術指南

    1、簡述 Apache SkyWalking 是一個開源的 APM(應用性能監控)工具,能夠實現分布式系統的全鏈路監控、性能分析以及服務依賴關系分析。SkyWalking 支持多種語言的探針,提供強大的可視化監控和分析能力,是微服務架構下性能調優和問題排查的利器。 樣例代碼: https://gitee.…

    [Lc] 最長公共子序列 | Fenwick Tree(樹狀數組):處理動態前綴和

    目錄 LCR 095. 最長公共子序列 題解 Fenwick Tree&#xff08;樹狀數組&#xff09;&#xff1a;處理動態前綴和 一、問題背景&#xff1a;當傳統方法遇到瓶頸 二、Fenwick Tree核心設計 2.1 二進制索引的魔法 2.2 關鍵操作解析 更新操作&#xff08;O(log n)&#xff0…

    python3.13.0環境安裝及python-docx庫安裝指南

    1. Python環境安裝 1.1 Windows系統安裝Python 下載Python安裝包 ? 訪問Python官網 ? 點擊"Download Python 3.x.x"&#xff08;推薦使用3.8及以上版本&#xff09; 2. 運行安裝程序 ? 雙擊下載的安裝包 ? 重要&#xff1a;勾選"Add Python to environmen…

    前端VUE框架理論與應用(4)

    一、計算屬性 模板內的表達式非常便利,但是設計它們的初衷是用于簡單運算的。在模板中放入太多的邏輯會讓模板過重且難以維護。例如: <div id="example">{{ message.split().reverse().join() }}</div> 在這個地方,模板不再是簡單的聲明式邏輯。你…