python 讀寫文件

https://www.cnblogs.com/evablogs/p/6725242.html

?

文件的打開讀寫關閉(文件使用完畢后必須關閉,因為文件對象會占用操作系統的資源)

1
2
3
4
5
6
7
8
9
#寫文件
with?open(r'D:\Test\1.txt','w') as f:???????????#with比<strong>try....finally</strong>更加簡潔,with自動調用close()方法;open(文件路徑,讀取方式),r:只讀,默認打開方式
??????f.write('Hello,world')????????????????????#write(str):寫入字符串;writelines():一次性寫入多行
#讀文件
with?open(r'D:\Test\1.txt','r') as f:???????????#r:讀
???????print?f.read()?????????#read([size]),size可選,指定讀取的文件大小,單位是字節,默認讀取全部,readline():讀取一行;readlines([size]),讀取返回一個列表,占內存空間
>>> Hello,world
1
2
3
4
5
6
>>>?try:
???????f=open(r'D:\Test',r)
???????print?f.read()
????finally:
????????if?f:
????????????f.close()

文件打開方式:

+:同時讀寫,即可讀又可寫,邊寫邊讀、邊讀邊寫

方式說明注意是否清空文件是否覆蓋文件內容文件不存在是否創建新文件
‘r’只讀文件不存在時報錯--
'r+'讀寫可讀可寫,文件不存在報錯,寫入時只覆蓋寫入文件的大小
'w'只寫可寫方式打開,不可讀-
'w+'讀寫可讀可寫-
'a'追加

文件已有的內容后追加內容,不可讀

'a+'追加以及讀可讀可追加,寫入時,添加到文章末尾,并且指針位于添加后的末尾,所以再次讀取會亂碼,因為指針指向末尾,讀取時實際上是跳過實際要讀取的內容,去讀取磁盤緩存的上一個文件緩存的內容,所以是亂碼
'rb','wb','ab','rb','wb+','ab+':二進制方式打開
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> with?open(r'D:\Test\a.txt','w') as f:
?????????f.write('Hello,world')
>>>with?open(r'D:\Test\a.txt','r') as f:
????????print?f.read()
>>> Hello,world????????????????????????????????????????#w寫入
>>> with?open(r'D:\Test\a.txt','a') as f:??????????????#追加,在后面添加內容
????????f.write('Hello,world')
>>> with?open(r'D:\Test\a.txt','r') as f:
????????print?f.read()
>>> Hello,worldHello,world
>>> with?open(r'D:\Test\a.txt','w') as f:??????????????#清空前面的內容重新寫入
?????????f.write('Hello,world')
>>> Hello,world

有關文件可能讀取出亂碼的問題:

一:檢查下文件的指針的指向,在寫完之后,必須要seek(0),把文件指針重新指向文件開頭,然后再讀,否則就會從緩沖區讀取一大堆亂碼

二:文件寫入的操作先是在緩存中進行的,只有文件關閉才真正寫入,因為read()似乎還是優先讀取內存緩沖區。

以上的兩個問題涉及到文件指針的移動seek()以及刷新緩存flush()

1
2
3
4
5
6
7
8
9
>>> f=open(r'D:\Test\a.txt','w')
>>> f.write('kkkkkkkk')????????????????????#此時文件的指針=8,8個字節
>>> f.flush()??????????????????????????????#刷新緩存,緩存中的內容刷新變成:kkkkkkkk[EOF],內容為空時:[EOF]
>>> f.read()???????????????????????????????#此時的指針在文件尾[EOF]上,則輸出的是''
''
>>> f.seek(0)??????????????????????????????#將指針指向文件頭,再進行文件內容的讀取,就不會產生亂碼
>>> f.read()
'kkkkkkkk'
>>> f.close()

?

?產生亂碼例子:

1
2
3
4
>>> f=open(r'D:\Test\a.txt','w+')
>>> f.write('uuuuuuuuuuuuuuuu')
>>> f.read()?????????????????????????????#沒有刷新緩存且將指針指向文件頭,讀取的是緩存中的其他亂碼內容
'\x00\x06\x00\x00\x00@\x00\x00\x00sb\x00\x00\x00d\x00\x00Z\x00\x00d\x01\x00d\.............................

轉載于:https://www.cnblogs.com/yuer20180726/p/10790332.html

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

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

相關文章

RUNOOB python練習題29

用來練手的python練習題其29&#xff0c;原題鏈接:python練習實例29 題干 : 給一個不多于5位的正整數&#xff0c;要求&#xff1a;一、求它是幾位數&#xff0c;二、逆序打印出各位數字。 實際這個正整數無論位數&#xff0c;在python3中都很容易實現。源代碼如下: def ent…

定時任務(Spring Cloud Task)

引入依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.sprin…

P3357 最長k可重線段集問題 網絡流

P3357 最長k可重線段集問題 題目描述 給定平面 x-O-yx?O?y 上 nn 個開線段組成的集合 II&#xff0c;和一個正整數 kk 。試設計一個算法&#xff0c;從開線段集合 II 中選取出開線段集合 S\subseteq IS?I ,使得在 xx 軸上的任何一點 pp&#xff0c;SS 中與直線 xpxp 相交的開…

服務被人當肉雞了,叫一路賺錢 xig

網上看了一下&#xff0c;說有專門人研究服務 個人懷疑是阿里云內部人干的&#xff0c;因為買了服務器后&#xff0c;沒有安裝對外使用的地址性質的網站&#xff0c;IP開通了之后只有阿里的人知道&#xff0c;上面還有阿里云盾。 看了下進程地址&#xff0c;上面的啟動命令 x…

RUNOOB python練習題30 回文數

用來練手的python練習題 30。原題鏈接:python練習實例30 題干 : 一個5位數&#xff0c;判斷它是不是回文數。即12321是回文數&#xff0c;個位與萬位相同&#xff0c;十位與千位相同。 與上一個例題類似&#xff0c;判斷一個數是不是回文數&#xff0c;我們使用字符串類型更加…

高并發與負載均衡-keepalived-概念介紹

keepalived是用戶空間的程序&#xff0c;這個程序會同時在主的lvs和備用的lvs啟動 轉載于:https://www.cnblogs.com/LXL616/p/10793790.html

asp.net2.0跨域問題

什么叫跨域&#xff1f; 簡單理解就是不同服務器&#xff0c;不同域名之間的訪問。 1 如何設置asp.net web程序的跨域&#xff1f; 在web.config中添加如下代碼 1 <system.webServer> <httpProtocol> <customHeaders> <add name&qu…

RUNOOB python練習題31 根據已輸入的字符判斷星期幾

用來練手的python練習題31&#xff0c; 原題鏈接 : python練習實例31 題干 : 請輸入星期幾的第一個字母來判斷一下是星期幾&#xff0c;如果第一個字母一樣&#xff0c;則繼續判斷第二個字母。 一個條件語句練習題&#xff0c;非常簡單了可以說&#xff0c;就是把所有的條件都…

解決FTPClient上傳文件為空,顯示0字節

JAVA使用FTPClient上傳文件時總是為空&#xff0c;而使用FileZilla客戶端時卻不會。 后來查了下資料&#xff0c;FTP服務器有被動模式和主動模式。&#xff08;具體查另外資料&#xff09; 在JAVA中將FTPClient設置為被動模式即可解決問題。 import org.apache.commons.net.f…

軟件工程——結對編程第二次作業

目錄 1. 題目及要求2. 功能的設計3. GUI&#xff08;圖形用戶界面&#xff09;的設計4. 容錯機制的設計4.1 選擇運算符的容錯處理4.2 最大值和題目數輸入的容錯處理4.3 打開文件容錯處理4.4 打印的容錯處理5. 程序的運行效果6. 對領航員的評價7. 總結本次作業所開發的程序已上傳…

RUNOOB python練習題 32 列表的中括號符號小tips

用來練手的python練習題&#xff0c;原題鏈接: python練習實例32 題干: 按相反的順序輸出列表的值 拿到題目首先寫下如下代碼: a [1,2,3,4] for i in range(len(a)):print(a[len(a)-i-1])輸出結果如下: 使用一個簡單的循環就可以完成這個操作。但其實python有利用中括號操…

redis啟動后出現WARNING you have Transparent Huge Pages (THP) support enabled in your kernel問題...

問題描述&#xff1a;啟動redis后出現&#xff1a;WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command echo never > /sys/kernel/mm/trans…

Anaconda安裝第三方包(whl文件)

先說下環境 Anaconda 對應Python3.5的版本 win7,64位系統。 step1&#xff1a;下載whl文件 step2&#xff1a;打開‘Anaconda Command Prompt‘&#xff0c; 如下圖&#xff1a; step3&#xff1a;命令行窗口pip安裝&#xff0c;代碼如下&#xff1a; pip install 路徑whl…

RUNOOB python練習題33 使用join方法實現用逗號分隔列表

用來練手的python練習題&#xff0c;原題鏈接:python練習實例33 題干: 按逗號分隔列表 用逗號分隔列表&#xff0c;我們就想到了join方法。 str.join(sequence)可以用自定的str字符串分隔一個序列&#xff0c;這個序列可以是字符串&#xff0c;列表&#xff0c;元組&#xff…

Use Vim as a Python IDE

Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugins and tools for building a delightful vim python environment, escpecially for Vim8: 我喜歡vim&#xff0c;經常用它來編寫Python代碼。以下是一些有用的插件和工…

sql2008“備份集中的數據庫備份與現有的xx數據庫不同”解決方法 因為是在另一臺電腦對同名數據庫做的備份,用常規方法還原,提示不是相同數據庫,不讓還原,在網上找到下面的方法解決了: 一、右擊系

sql2008“備份集中的數據庫備份與現有的xx數據庫不同”解決方法 因為是在另一臺電腦對同名數據庫做的備份&#xff0c;用常規方法還原&#xff0c;提示不是相同數據庫&#xff0c;不讓還原&#xff0c;在網上找到下面的方法解決了&#xff1a; 一、右擊系統數據庫master&…

RUNOOB python練習題 35 python print各色字體及背景

用來練手的python練習題&#xff0c;原題鏈接: python練習實例35 題干: 文本顏色設置 python中通過指令可以控制輸出的背景顏色&#xff0c;前景顏色&#xff0c;以及顯示方式。指令的語法如下: ’\033[顯示方式&#xff1b;前景色&#xff1b;背景色m 輸出字符 \033[0m’ 其…

ubuntu18.04 qemu環境搭建【學習筆記】

一、準備工具   1.1 安裝相關工具     sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1.2 下載kernel(linux-4.0)與busybox(1.24)源碼 https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ https://busybox.net/downloads/busy…

for else語句小tips : RUNOOB python練習題36

用來練手的python練習題&#xff0c;原題鏈接: python練習實例36 題干: 求100之內的素數 求某個范圍內的素數&#xff0c;和之前的一個例題其實是一樣的&#xff0c;上次的同類例題鏈接如下: python練習實例12 在實現題目要求時&#xff0c;這次用了for else語句&#xff0c…

Linux 下殺毒軟件 clamav 的安裝和使用

Linux 下殺毒軟件 clamav 的安裝和使用 安裝依賴&#xff1a; 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum install -y openssl yum install -y epel-release openssl version 0.9.8 or higher 1. yum 安裝 clamav 安裝后會自動生成服務文件&#…