python文件讀寫

文章目錄

  • 讀文件
    • python2&python3差異
    • 示例代碼
  • 文件路徑
  • 問題處理:字符編碼報錯

讀文件

python2&python3差異

普通模式(python2、python3通用)

f = open(fileName, mode='r')

open函數在python2和python3差異點:

python3支持多個參數,python2只有2個參數,且對于文件編碼不支持

#python3
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open#python2
open(name[, mode[, buffering]])

python2如何支持不同編碼的文件讀寫?

import codecs
# 這里增加u是為了防止亂碼,詳見 https://blog.csdn.net/songlh1234/article/details/83791205
fileNameWrite = u'測試codecs寫入gbk.txt'
fileWrite = codecs.open(fileNameWrite, 'w', "gbk")
fileWrite.write('設備編號,deviceID,ehomeKey,執行結果,返回報文\n')

另外這里需要注意,以上代碼在python3下執行正常,但write這一行代碼在python2下會報錯:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)

需要額外設置默認字符

try:# Python2reload(sys)sys.setdefaultencoding("utf-8")
except NameError:print('NameError')

示例代碼

UTF-8編碼方式打開文件

def openFile(path):f = Nonetry:f = open(path, encoding='UTF-8')except FileNotFoundError:print("open file %s error" % path)else:print("open file %s ok" % path)return f

gb18030編碼方式打開文件

def openFile(path):f = Nonetry:f = open(path, encoding='gb18030')except FileNotFoundError:print("open file %s error" % path)else:print("open file %s ok" % path)return f

說明:如果不帶encoding參數,會采用系統編碼,Windows下默認為gbk
讀取文件內容

file_name = r"D:\1.txt"
f = openFile(file_name)
for line in f:print(line)

文件路徑

獲取當前路徑:

os.getcwd()

拼接路徑和文件名

fileName1 = os.path.join(filePath, fileName) 

獲取文件所在的文件目錄

directory_path = os.path.dirname(file_name) # 根據絕對路徑,返回所在的目錄

問題處理:字符編碼報錯

讀取文件字符時遇到如下問題:

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa6 in position 1909: illegal multibyte sequence

問題原因:文檔默認使用’gbk’編碼打開,但文檔實際編碼是gb18030,有些字符無法被gbk識別。

解決方案:打開文件的時候可以指定字符集為gb18030

f = open(path, encoding="gb18030")

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

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

相關文章

【代碼隨想錄刷題】Day20 二叉樹06

文章目錄 1.【654】最大二叉樹1.1 題目描述1.2 解題思路1.3 java代碼實現1.4 總結 2.【617】合并二叉樹2.1 題目描述2.2 解題思路2.3 java代碼實現 3.【700】二叉搜索樹中的搜索3.1 題目描述3.2 解題思路3.3 java代碼實現 4.【98】驗證二叉搜索樹4.1 題目描述4.2 解題思路4.3 j…

盤點11月Sui生態發展,了解Sui的近期成長歷程!

11月是Web3的“回暖期”,行業持續展現增長趨勢。Sui緊隨行業腳步,開展了一系列生態活動。其中歷時一個多月的Quest 3游戲活動順利結束并公布獎勵,在多地區成功舉辦Move和Sui生態黑客松&交流會,還有針對中文社區開發者教育的星…

MQTT協議對比QUIC網絡性能測試模擬弱網測試

MQTT正常外網壓測數據---時延diff/ms如下圖: MQTT弱網外網壓測數據 QUIC正常外網壓測數據 QUIC弱網外網壓測數據 結論: 在弱網情況下,MQTT和QUIC(Quick UDP Internet Connections)這兩種協議的網絡性能表現也會有…

Axure原型圖表組件庫,數據可視化元件(Axure9大屏組件)

針對Axure制作的大屏圖表元件庫,幫助產品經理更高效地制作高保真圖表原型,是產品經理必備元件工具。現分享完整的組件庫,大家一起學習。 本組件庫的圖表模塊,已包含所有常用的圖表,以下為部分組件截圖示意。文末可下載…

頁面初始化后,需要滾動到某個元素的位置,但是該元素尚未渲染完成。

vue方式 <template><div class"doc"><!-- 判斷是否還在渲染期間 --><div class"fixed" v-show"loading">頁面仍在渲染中&#xff0c;請稍后</div><div class"green" v-show"!loading">…

TA-Lib學習研究筆記(九)——Pattern Recognition (2)

TA-Lib學習研究筆記&#xff08;九&#xff09;——Pattern Recognition &#xff08;2&#xff09; 形態識別的函數的應用&#xff0c;通過使用A股實際的數據&#xff0c;驗證形態識別函數&#xff0c;用K線顯示出現標志的形態走勢&#xff0c;由于入口參數基本上是open, hig…

反向傳播算法

反向傳播算法的數學解釋 反向傳播算法是深度學習中用于訓練神經網絡的核心算法。它通過計算損失函數相對于網絡權重的梯度來更新權重&#xff0c;從而最小化損失。 反向傳播的基本原理 反向傳播算法基于鏈式法則&#xff0c;它按層反向傳遞誤差&#xff0c;從輸出層開始&…

寒冬不再寒冷:氣膜體育館如何打造溫馨運動天地

取暖季即將來臨&#xff0c;隨著氣溫逐漸下降&#xff0c;人們在寒冷的冬季里如何保持運動熱情和身體的健康成為了一項挑戰。而在這個時候&#xff0c;氣膜體育館成為了運動愛好者們的理想場所&#xff0c;提供如春般溫暖舒適的運動環境。那么&#xff0c;讓我們一起揭秘氣膜體…

2024年SEO策略:如何優化您的知識庫?

如今很多人在遇到問題時都會求助于谷歌。谷歌已經成為提供解決方案不可或缺的工具。作為全球搜索引擎的巨頭&#xff0c;擁有大量用戶流量。這就是為什么確保您的產品和服務在谷歌搜索結果中排名靠前是至關重要的&#xff0c;如果您想獲得更多的客戶&#xff0c;SEO是一個非常關…

Filed II 繪制超聲 3D/2D 點擴散函數

點擴散函數可以較好地描述超聲對成像目標分辨能力,利用 filed II 仿真工具實現點擴算函數 PSF 的 3D 和 2D 繪制。 定義換能器基本參數 f0=5e6; % Transducer center frequency [Hz] fs=100e6; % Sampling frequency [Hz] c=1540; % Speed of sound [m/s] width=0.15/1000

<Linux> 文件系統

目錄 前言&#xff1a; 一、 磁盤 &#xff08;一&#xff09;磁盤的物理結構 &#xff08;二&#xff09;磁盤的物理存儲結構 1. 數據存儲 2. 存儲結構 二、磁盤的邏輯抽象 三、磁盤信息 &#xff08;一&#xff09;具體結構 &#xff08;二&#xff09;重新認識目錄…

SOLIDWORKS Flow Simulation電子機箱散熱

這一次我們來聊聊電子冷卻問題&#xff0c;以這個機箱散熱問題為例&#xff0c;我們一般的散熱設計要求是CPU不能超過80℃&#xff0c;北橋芯片溫度不能超過85℃&#xff0c;南橋芯片不超過95℃。在實際情況下芯片內部的各處溫度是不一樣&#xff0c;面對與芯片級別的散熱分析我…

mysql中MDL(元數據鎖)的長事務讀寫阻塞如何解決

MDL&#xff0c;即元數據鎖是什么&#xff0c;我們已經介紹過了 那其存在的長事務讀寫阻塞問題&#xff0c;一般是怎么解決的呢&#xff0c;主要有兩種解決方法。 online ddl MySQL5.6開始&#xff0c;推出一項新功能Online DDL&#xff0c;在ALTER或者CREATE INDEX等語句后添…

【教學類-35-05】17號的學號字帖(A4豎版1份)

作品展示&#xff1a; 背景需求&#xff1a; 大四班17號男孩目前無法自主數學數字。他表示自己能夠認識數字&#xff0c;但不會寫。 保育老師說&#xff1a;我曾經教過他&#xff0c;抓著手示范的。但是他記不住。家里估計也不練習的。年齡還沒到&#xff0c;下學期再看看能不…

有限空間作業中毒窒息事故頻發,漢威科技創新方案護航

工貿企業有限空間是我國重大事故多發頻發的重點領域之一&#xff0c;安全問題形勢嚴峻。 有限空間是指封閉或者部分封閉、未被設計為固定工作場所&#xff0c;人員可以進入&#xff0c;通風不良&#xff0c;易造成有毒有害物質、易燃易爆氣體積聚或者氧含量不足的空間&#xf…

消息中間件基本概念

基本概念 消息隊列三個場景&#xff1a;異步&#xff0c;削峰&#xff0c;解耦 異步&#xff1a;將整個流程進行異步發送&#xff0c;也就是說本來順序執行的程序化流程&#xff0c;異步后可以同時進行操作&#xff0c;互不影響&#xff0c;但保持最終結果一致性&#xff1b;…

ChatGPT顛覆性地改變了個性化學習

開發者歡呼,ChatGPT開啟了教育的新時代教育者和學生都將從革命性的技術中受益ChatGPT是由OpenAI開發的強大的語言模型,它在個性化學習領域取得了重大突破。這一新的發展有望徹底改變教育的方式,使其更加定制化、有趣和有效。 開發者和教育者的重大新聞 這一消息對于一直努…

excel做預測的方法集合

一. LINEST函數 首先&#xff0c;一元線性回歸的方程&#xff1a; y a bx 相應的&#xff0c;多元線性回歸方程式&#xff1a; y a b1x1 b2x2 … bnxn 這里&#xff1a; y - 因變量即預測值x - 自變量a - 截距b - 斜率 LINEST的可以返回回歸方程的 截距(a) 和 斜…

jsp使用 分頁專用工具

分頁器&#xff0c;根據過來的參數計算當著頁應當從哪一條記錄開始顯示&#xff0c;并且顯示到哪。 PageUtils [pageSize5, currIndex1, totalCount166, totalPage34, startPosition0] PageUtils [pageSize5, currIndex5, totalCount166, totalPage34, startPosition20] PageUt…

5.10 Windows驅動開發:摘除InlineHook內核鉤子

在筆者上一篇文章《內核層InlineHook掛鉤函數》中介紹了通過替換函數頭部代碼的方式實現Hook掛鉤&#xff0c;對于ARK工具來說實現掃描與摘除InlineHook鉤子也是最基本的功能&#xff0c;此類功能的實現一般可在應用層進行&#xff0c;而驅動層只需要保留一個讀寫字節的函數即可…