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

歡迎訪問 生活随笔!

生活随笔

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

python

python61到08使用说明书_python 08 文件操作

發布時間:2025/3/11 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python61到08使用说明书_python 08 文件操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ctrl + s 保存至磁盤

.exe  .txt?  .ppt  .jpg  文件格式

open() 函數用于打開一個文件,創建一個?file?對象,相關的方法才可以調用它進行讀寫

open(filename,mode)

filename:包含了你要訪問的文件名稱的字符串值。

mode:決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀(r)。

r

以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。

rb

以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。

r+

打開一個文件用于讀寫。文件指針將會放在文件的開頭。

rb+

以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。

w

打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

wb

以二進制格式打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

w+

打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

wb+

以二進制格式打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

a

打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。

ab

以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。

a+

打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。

ab+

以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。

模式rr+ww+aa+

+

+

+

+

+

+

+

+

+

創建

+

+

+

+

覆蓋

+

+

指針在開始

+

+

+

+

指針在結尾

+

+

當前文件路徑  /Users/magick/python

文件名  mo.txt

文件內容

1 one

2 two

>>> f=open(r'/Users/magick/python/mo.txt','r')

>>> f

>>> list(f)

['1 one\n', '2 two']

f.close()  關閉文件(關閉時緩存文件內容)

為了讀取一個文件的內容,調用 f.read(size), 這將讀取一定數目的數據, 然后作為字符串或字節對象返回。

size 是一個可選的數字類型的參數。 當 size 被忽略了或者為負, 那么該文件的所有內容都將被讀取并且返回。

f=open(r'/Users/magick/python/mo.txt','r')

print(f.read())

執行結果

1 one

2 two

f.readline() 會從文件中讀取(當前)的一行。換行符為 '\n'

f.readline() 如果返回一個空字符串, 說明已經已經讀取到最后一行。

f=open(r'/Users/magick/python/mo.txt','r')

print(f.readline ())

執行結果

1 one

f.readlines() 將返回該文件中包含的所有行。

如果設置可選參數 sizehint, 則讀取指定長度的字節, 并且將這些字節按行分割。

f=open(r'/Users/magick/python/mo.txt','r')

print(f.readlines ())

執行結果

['1 one\n', '2 two']

迭代一個文件對象然后讀取每行

f=open(r'/Users/magick/python/mo.txt','r')

for l in f:

print(l,end='')

執行結果

1 one

2 two

f.write(string) 將 string 寫入到文件中, 然后返回寫入的字符數。

f=open(r'/Users/magick/python/mo.txt','w')    #w為寫入(覆蓋)

num = f.write("5")    #用字符串'5'覆蓋原文件,字符數為num=1

print(num)      1

f.close()

如果要寫入一些不是字符串的東西, 那么將需要先進行轉換:

f=open(r'/Users/magick/python/mo.txt','w')

num = (2,"a")

n=str(num)

f.write(n)

$?cat mo.txt

(2, 'a')

f.name  查找文件所在系統位置(文件名)

>>> f.name

'/Users/magick/python/mo.txt'

如果要改變文件當前的位置, 可以使用 f.seek(offset, from_what) 函數。

from_what 的值, 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示文件的結尾,例如:

seek(x,0) : 從起始位置即文件首行首字符開始移動 x 個字符

seek(x,1) : 表示從當前位置往后移動x個字符

seek(-x,2):表示從文件的結尾往前移動x個字符

f.tell() 返回文件對象當前所處的(指針)位置, 它是從文件開頭開始算起的字節數。

f.read()?方法用于從文件讀取指定的字節數,如果未給定或為負則讀取所有。

>>> f=open(r'/Users/magick/python/mo.txt','rb+')

>>> f.write(b'1234567890')

10

>>> f.seek(5)    ? 移動到第六個

5          第6個(從0開始)

>>> f.read(1)     讀取第一個數字

b'6'

>>> f.tell()      顯示當前(指針)位置

6

>>> f.seek(-2,2)   移動到倒數第二個

8          第9個(從0開始)

>>> f.read(1)     讀取第一個數字

b'9'

>>> f.tell()   ?  ?  當前(指針)位置

9

>> f.seek(0,0)    返回最初的位置

>>for e in f:      迭代f的全部內容

print(e)

python文件寫入也可以進行網站爬蟲

以下代碼是打開project.txt文件,并向里面寫入http://www.baidu.com網站代碼

fromurllib importrequest

response =request.urlopen("http://www.baidu.com/")# 打開網站

fi=open("project.txt",'w')# open一個txt文件

page =fi.write(str(response.read()))# 網站代碼寫入

fi.close()# 關閉txt文件

input() 默認輸入的為 str 格式,若用數學計算,則需要轉換格式,例:

a=input('請輸入數字:')print(a*2)

假設輸入數值為3,則上例中得出結果為:

33

若將代碼修改為:

a=int(input('請輸入數字:'))print(a*2)

則結果為:

6

實踐

文件內容

1:1213

2:121321

1:1323

-----

1:22324

2:2232341

1:2242415

-----

1:321515

2:321515

1:315253

文件名record.txt

1:開頭的單獨保存為boy_*.txt

2:開頭的單獨保存為girl_*.txt

不同段落(-----)分割

三段分別保存為

boy_1.txt , boy_2.txt , boy_3.txt

girl_1.txt , girl_2.txt , girl_3.txt

defsave_file (boy,girl,count):#保存

f_name_boy = 'boy_'+ str(count) + '.txt' #定義名字,用名字提示第幾次分割

f_name_girl = 'girl_'+ str(count) + '.txt'boy_file= open(f_name_boy,'w') #用定義的名字創建文件

girl_file = open (f_name_girl,'w')

boy_file.writelines(boy)#把boy的內容寫入文件中

girl_file.writelines(girl)

boy_file.close()#關閉文件

girl_file.close()defsplit_file(file_name):#分割

f= open('record.txt')

boy=[]

girl=[]

count= 1

for e inf:if e[:5] != '-----':

(role,l)=e.split(':',1) #e.split(':',1) :的左右分割,左role,右l

if role == '1':

boy.append(l)#寫入boy,此時boy為列表

if role == '2':

girl.append(l)#寫入girl列表

else:

save_file(boy,girl,count)#此時迭代至分割線,把上一輪的列表數保存

boy=[] #帶入保存函數,清空列表

girl=[]

count+= 1 #進入下一次分割

save_file(boy,girl,count)#跳出迭代,保存最后一組數據

f.close()#關閉文件

split_file('record.txt')

整體思路:

準備兩個列表

迭代文件

沒有遇到分割線時

:左右分割,符號條件的放到對應列表中

遇到分割線時保存列表數據至文件,回到迭代判斷處,準備下一次

保存文件可使用函數dfl

用名字提示第幾次分割

創建文件

把數據寫入文件中

關閉文件

所以要接收數據,第幾次分割

模塊是一個包含所有你定義的函數和變量的文件,其后綴名是.py

模塊可以被別的程序引入,以使用該模塊中的函數等功能(標準庫)

有os模塊,不用關心操作系統下使用什么模塊

os模塊會自動選擇正確的模塊并調用

>>import os  #引用os模塊

>>os.getcwd()  #當前工作目錄

'/Users/magick/python'

>>> os.chdir('/Users/magick')  #修改工作目錄,移動

>>> os.getcwd()

'/Users/magick'

>>> os.listdir()    #列舉當前目錄的文件

['Music', '.DS_Store', '.CFUserTextEncoding', '.idm', 'python', 'Pictures', 'Desktop', 'Library', '.bash_sessions', '.mplayer', 'PycharmProjects', 'Public', '.dropbox', 'Python 3.7', '.idlerc', 'Movies', 'Applications', 'Dropbox', '.Trash', 'Documents', '.bash_profile', 'Downloads', '.bash_history', '.viminfo']

>>> os.mkdir('/Users/magick/a')    #創建單層目錄(文件)

>>> os.mkdir('/Users/magick/a/b')    #a存在的情況下創建b

>>> os.mkdir('/Users/magick/c/b')    #不存在c,所以不能在c中創建b,報錯

>>> os.mkedirs('/Users/magick/a/b')    #遞歸創建多層目錄,需要包含子目錄

>>> os.rmdir('/Users/magick/a/b')    #刪除路徑目錄,僅當這個文件夾是空的才行

>>> os.mkdir('/Users/magick/python/a/a')

>>> os.mkdir('/Users/magick/python/a/a/a')

>>> os.mkdir('/Users/magick/python/a/a/a/a')

>>> os.removedirs('/Users/magick/python/a/a/a/a')  #遞歸刪除目錄如果子文件夾成功刪除嘗試它們的父文件夾

>>> os.listdir()

['c', 'b']

>>> os.listdir()

['.DS_Store', 'c', 'b']

>>> os.unlink('.DS_Store')    #刪除文件,如果文件是一個目錄則返回一個錯誤

>>> os.listdir()

['c', 'b']

>>> os.listdir()

['c', 'b']

>>> os.rename('c','a')    #命名(修改)文件或目錄

>>> os.listdir()

['a', 'b']

os.curdir    指代當前目錄

os.pardir    指代上一級目錄

os.path 模塊

import os  引用os模塊時就已經引用了os.path

>>os.path.basename('/Users/magick/a.txt')    #去掉目錄路徑,單獨返回文件名

a.txt

>>>>os.path.basename('/Users/magick/a.txt')    #去掉文件名,單獨返回目錄路徑

/Users/magick

>>os.path.join('c:\\','a','b')      #各部分組合成一個路徑名

c:a\\b

>>os.path.split('c:\\a\\b.txt')    #分割文件名與路徑

('c:\\a','b.txt')

>>os.path.splitext('c:\\a\\b.txt')    #分離文件名與擴展名

('c:\\a\\b','txt')

os.getatime  返回指定文件最近的訪問時間(浮點型秒數,可用time模塊的gmtime()或localtime()函數換算)

import time

os.path.getatime('c:\\a\\b.txt')      返回浮點型秒數

time.gmtime(os.path.getatime('c:\\a\\b.txt'))    返回日期

os.getctime(file)  返回指定文件的創建時間

os.getmtime(file)  返回指定文件最新的修改時間

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python61到08使用说明书_python 08 文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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