日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

如何利用python在一个文档里写入长须_Python语法入门—文件处理

發布時間:2024/10/8 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何利用python在一个文档里写入长须_Python语法入门—文件处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、什么是文件

文件是操作系統提供給用戶/應用程序操作硬盤的一種虛擬的概念/接口

==計算機三大層次結構==

用戶/應用程序(open())

操作系統(文件)

計算機硬件(硬盤)

2、為何要用文件

==保存數據==

用戶/應用程序 可以通過文件將數據永久保存的硬盤中?,即操作文件就是操作硬盤

==讀取數據==

用戶/應用程序 直接操作的是文件,對文件進行的所有的操作,都是在向操作系統發送系統調用,然后再由操作將其轉換成具體的硬盤操作

3、如何使用文件

3.1 基本操作流程

3.1.1 基本流程

=1=打開文件——文件句柄?:open('文件路徑', '模式')

=Windows路徑分隔符問題

open('C:\a.txt\nb\c\d.txt')#解決方案一:推薦(windows系統的路徑是用?\ 間隔)

open(r'C:\a.txt\nb\c\d.txt')#解決方案二:(Linux系統的路徑是用?/ 間隔)

open('C:/a.txt/nb/c/d.txt')

f=open(r'aaa/a.txt',mode='rt') #f的值是一種變量,占用的是應用程序的內存空間.

r 的作用是避免路徑中出現的‘\n’被解釋器識別為轉義字符#print(f)#x=int(10)

f=open('a.txt','r')的過程分析

#1、由應用程序向操作系統發起系統調用open(...)

#2、操作系統打開該文件,并返回一個文件句柄給應用程序

#3、應用程序將文件句柄賦值給變量f

=絕對路徑和相對路徑

https://www.cnblogs.com/bigorangecc/p/11179863.html

=2=操作文件:讀/寫文件—— res=f.read()? ?res=f.write()

讀/寫文件,應用程序對文件的讀寫請求都是在向操作系統發送系統調用,然后由操作系統控制硬盤把輸入讀入內存、或者寫入硬盤

res=f.read()print(type(res))#print(res)

=3=關閉文件?—— f.close()

f.close() #回收操作系統資源print(f)f.read() # 變量f存在,但是不能再讀了del f # 回收應用程序資源

3.1.2 ?with上下文管理

=1= 作用一:為了防止遺漏 f.close()

#文件對象又稱為文件句柄

#with open('a.txt',mode='rt') as f1: # f1=open('a.txt',mode='rt')#res=f1.read()#print(res)

=2= 作用二:一次讀取多個文件

with open('a.txt',mode='rt') as f1,\ ?# 一次輸入有換行的代碼—— \的作用是反義字符,本身換行了,再在文末加上反義字符 \,則表示上下兩行是同一部分的內容

open('b.txt',mode='rt') as f2:

res1=f1.read()

res2=f2.read()print(res1)print(res2)#f1.close()

#f2.close()

3.1.3 指定字符編碼

強調:t 和 b不能單獨使用,必須跟r/w/a連用

t文本(默認的模式)

1、讀寫都以str(unicode)為單位的

2、文本文件

3、必須指定encoding='utf-8'

#沒有指定encoding參數操作系統會使用自己默認的編碼#linux系統默認utf-8#windows系統默認gbk

with open('c.txt',mode='rt',encoding='utf-8') as f:

res=f.read() #t模式會將f.read()讀出的結果解碼成unicode

print(res,type(res))#內存:utf-8格式的二進制-----解碼-----》unicode#硬盤(c.txt內容:utf-8格式的二進制)

3.2 模式介紹

=1= 模式一:控制文件讀寫內容的模式—— t 和 b

強調:t?和 b 不能單獨使用,必須跟r / w /?a 連用

t 模式

1、讀寫都是以字符串(unicode)為單位

2、只能針對文本文件

3、必須指定字符編碼,即必須指定encoding參數

b 模式(binary模式)

1、讀寫都是以字節bytes為單位

2、可以針對所有文件

3、一定不能指定字符編碼,即一定不能指定encoding參數

總結:

1、在操作純文本文件方面,t 模式幫我們省去了編碼與解碼的環節,b 模式則需要手動編碼與解碼,所以此時?t 模式更為方便

2、針對非文本文件(如圖片、視頻、音頻等)只能使用b模式

=2= 模式二:控制文本讀寫操作的模式—— r?/w /?a /?+

r—只讀模式

w—只寫模式

a—只追加寫模式

+—r+、w+、a+

x—只寫模式

3.3 文件的操作模式

3.3.1 控制文件讀寫內容的模式

1、t 模式

t模式只能讀文本文件

#錯誤演示:t模式只能讀文本文件

with open(r'愛情公寓.mp4',mode='rt') as f:

f.read()#硬盤的二進制讀入內存-》t模式會將讀入內存的內容進行decode解碼操作

with open(r'd.txt',mode='rt',encoding='utf-8') as f:

res=f.read() #utf-8的二進制->unicode

print(res)

2、b 模式

2.1 讀取圖片

with open(r'test.jpg',mode='rb',encoding='utf-8') as f:

res=f.read() #硬盤的二進制讀入內存—>b模式下,不做任何轉換,直接讀入內存

print(res) #bytes類型—》當成二進制

print(type(res))

2.2 讀取文本文件

with open(r'd.txt',mode='rb') as f:

res=f.read() #utf-8的二進制

print(res,type(res))print(res.decode('utf-8'))

2.3 b模式下寫入文件

with open(r'f.txt',mode='wb') as f:

f.write('你好hello'.encode('utf-8'))

f.write('哈哈哈'.encode('gbk'))

2.4 案例——改寫文件copy工具

#文件拷貝工具

src_file=input('源文件路徑>>:').strip()

dst_file=input('源文件路徑>>:').strip()

with open(r'{}'.format(src_file),mode='rb') as f1,\

open(r'{}'.format(dst_file),mode='wb') as f2:#res=f1.read() # 內存占用過大

#f2.write(res)

for line in f1: #推薦使用

f2.write(line)

3、案例分析——r、b對比—循環讀取文件

方式一:自己控制每次讀取的數據的數據量

with open(r'test.jpg',mode='rb') as f:whileTrue:

res=f.read(1024) #1024

if len(res) ==0:break

print(len(res))

方式二:以行為單位讀,當一行內容過長時會導致一次性讀入內容的數據量過大

with open(r'g.txt',mode='rt',encoding='utf-8') as f:for line inf:print(len(line),line)

with open(r'g.txt',mode='rb') as f:for line inf:print(line)

with open(r'test.jpg',mode='rb') as f:for line inf:print(line)

3.3.2 控制文件讀寫操作的模式——以 t 模式為基礎進行內存操作

1、r(默認的操作模式):只讀模式,當文件不存在時報錯,當文件存在時文件指針跳到開始位置

with open('c.txt',mode='rt',encoding='utf-8') as f:print('第一次讀'.center(50,'*'))

res=f.read() #把所有內容從硬盤讀入內存

print(res)

with open('c.txt', mode='rt', encoding='utf-8') as f:print('第二次讀'.center(50,'*'))

res1=f.read()print(res1)

案例一 :用戶登入驗證

用戶登入驗證:

inp_username=input('your name>>:').strip()

inp_password=input('your password>>:').strip()#驗證

with open('user.txt',mode='rt',encoding='utf-8') as f:for line inf:#print(line,end='') # egon:123\n

username,password=line.strip().split(':')if inp_username == username and inp_password ==password:print('login successfull')break

else:print('賬號或密碼錯誤')

2、w:只寫模式,當文件不存在時會創建空文件,當文件存在會清空文件,指針位于開始位置

with open('d.txt',mode='wt',encoding='utf-8') as f:

f.read()#報錯,不可讀

f.write('擦勒\n')

強調1:

在以w模式打開文件沒有關閉的情況下,連續寫入,新的內容總是跟在舊的之后with open('d.txt',mode='wt',encoding='utf-8') as f:

f.write('你好1\n')

f.write('你好2\n')

f.write('你好3\n')

強調2:

如果重新以w模式打開文件,則會清空文件內容with open('d.txt',mode='wt',encoding='utf-8') as f:

f.write('你好1\n')

with open('d.txt',mode='wt',encoding='utf-8') as f:

f.write('你好2\n')

with open('d.txt',mode='wt',encoding='utf-8') as f:

f.write('你好3\n')

案例二 :w模式用來創建全新的文件——文本文件的copy工具

文本文件的copy工具

src_file=input('源文件路徑>>:').strip()

dst_file=input('源文件路徑>>:').strip()

with open(r'{}'.format(src_file),mode='rt',encoding='utf-8') as f1,\

open(r'{}'.format(dst_file),mode='wt',encoding='utf-8') as f2:

res=f1.read()

f2.write(res)

3、a:只追加寫,在文件不存在時會創建空文檔,在文件存在時文件指針會直接調到末尾

with open('e.txt',mode='at',encoding='utf-8') as f:#f.read() # 報錯,不能讀

f.write('擦嘞1\n')

f.write('擦嘞2\n')

f.write('擦嘞3\n')

強調 w 模式與 a 模式的異同:1相同點:在打開的文件不關閉的情況下,連續的寫入,新寫的內容總會跟在前寫的內容之后2 不同點:以 a 模式重新打開文件,不會清空原文件內容,會將文件指針直接移動到文件末尾,新寫的內容永遠寫在最后

案例三:a模式用來在原有的文件內存的基礎之上寫入新的內容,比如記錄日志、注冊

注冊功能

name=input('your name>>:')

pwd=input('your code>>:')

with open('db.txt',mode='at',encoding='utf-8') as f:

f.write('{}:{}\n'.format(name,pwd))

總結

以上是生活随笔為你收集整理的如何利用python在一个文档里写入长须_Python语法入门—文件处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。