欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python文件處理

 更新時(shí)間:2016年02月29日 10:54:04   作者:李興利  
這篇文章主要介紹了Python文件處理的相關(guān)資料,需要的朋友可以參考下

本文給大家介紹Python文件處理相關(guān)知識(shí),具體內(nèi)容如下所示:

1.文件的常見(jiàn)操作

文件是日常編程中常用的操作,通常用于存儲(chǔ)數(shù)據(jù)或應(yīng)用系統(tǒng)的參數(shù)。python提供了os、os.path、shutil等模塊處理文件,其中包括最常用的打開(kāi)文件,讀寫(xiě)文件,賦值文件和刪除文件等函數(shù)。

1.1文件的創(chuàng)建

python3.+中移除了python2中的全局file()函數(shù),還保留了open()函數(shù)。文件的打開(kāi)或創(chuàng)建可以使用函數(shù)open()。該函數(shù)可以指定處理模式,設(shè)置打開(kāi)的文件為只讀,只寫(xiě),可讀寫(xiě)狀態(tài)。open()的聲明如下:

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

參數(shù)說(shuō)明:

•參數(shù)file是被打開(kāi)的文件名稱(chēng),如果文件file不存在,open()將創(chuàng)建名為name的文件,然后再打開(kāi)該文件。

•參數(shù)mode是指文件的打開(kāi)模式。文件的打開(kāi)模式請(qǐng)參照以下內(nèi)容。

•參數(shù)buffering是設(shè)置緩存模式。0表示不緩存,1表示緩存;如果大于1則表示緩沖區(qū)的大小,以字節(jié)為單位。

•參數(shù)encoding是設(shè)置文件的字符編碼格式。

•open()函數(shù)會(huì)返回一個(gè)file對(duì)象,file 對(duì)象可以對(duì)文件進(jìn)行各種操作 文件模式:

'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing

創(chuàng)建一個(gè)新的文件,打開(kāi)并寫(xiě)入

'a' open for writing, appending to the end of the file if it exists

模式打開(kāi)文件以追加

'b' binary mode二進(jìn)制模式打開(kāi),可與其他模式一起使用
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)支持所有的換行符號(hào)

注意:圖片、視頻等文件必須使用b的模式進(jìn)行讀寫(xiě)。

message = '''
hello world,\n
hello python,\n
good time.
'''
f = open('test.txt','w')
f.write(message)
f.close()

代碼說(shuō)明:

•定義一個(gè)字符串變量

•以只寫(xiě)模式創(chuàng)建一個(gè)文件并寫(xiě)入

•將字符串變量寫(xiě)入文件

•關(guān)閉文件

1.2 文件的讀取

文件的讀取有多種方法,可以使用readline()、readlines()、或read()函數(shù)讀取文件。

1.按行讀取方式readline()

readline()每次讀取文件的一行,需要循環(huán)讀取文件。但是當(dāng)文件指針移動(dòng)到文件的末尾是,依然使用readline()讀取文件將出現(xiàn)錯(cuò)誤。因此程序中需要添加一個(gè)判斷語(yǔ)句,判斷時(shí)間指針是否在文件的尾部,并且通過(guò)該語(yǔ)句中斷循環(huán)。示例如下:

# 使用readline模式讀取文件
f = open('test.txt','r')
while True:
line = f.readline()
if line:
print(line)
else:
break
f.close()
#如果line = f.readline(2)則表示每次循環(huán)只讀取兩字節(jié)的內(nèi)容,直到行的末尾

2.多行讀取方式readlines()

# 多行讀取文件
f = open('test.txt')
lines = f.readlines()
for line in lines:
print(line)
f.close()

3.一次性讀取方式read()

讀取文件最簡(jiǎn)單的方式就是使用read(),read()將文件中一次性讀出所有內(nèi)容,并賦值給字符串變量,但是當(dāng)文件比較大的時(shí)候不建議使用read()的方式去讀取文件,因?yàn)橐淮巫x取比較大的內(nèi)容會(huì)消耗大量的內(nèi)存,影響系統(tǒng)的性能。示例如下:

# 一次讀取文件
f = open('test.txt','r')
lines = f.read()
print(lines)
f.close()

文件指針:

with open('test.txt','rb') as src:
rd = src.read(100)
print(rd)
print(src.seek(src.tell()))
rd = src.read(100)
print(rd)
print(src.seek(src.tell()))
#每次讀取100字節(jié),然后返回指針的位置

4.with函數(shù)

通常我們使用open()打開(kāi)一個(gè)文件并賦值給一個(gè)字符串變量來(lái)對(duì)文件進(jìn)行操作,最后還需要進(jìn)行手動(dòng)關(guān)閉文件,這樣寫(xiě)起來(lái)有點(diǎn)麻煩,下面我們可以使用with函數(shù)將文件打開(kāi)與關(guān)閉寫(xiě)在一行函數(shù)上。

with open('test.txt','r') as src:
da = src.read()
print(da)
#只讀模式打開(kāi)文件并賦值給src,然后對(duì)文件進(jìn)行操作即可,代碼與使用open()來(lái)操作文件相同。

1.3文件的寫(xiě)入

文件的寫(xiě)入有多種方法,可以使用write(),也可以使用writelines()方法寫(xiě)入文件。write()可以將字符串寫(xiě)入文件,writelines()可以將列表寫(xiě)入文件。示例如下:

m1 = 'hello world'
l1 = ['good','time']
f = open('test1.txt','w')
f.write(m1)
f.writelines(l1)
f.close()

文件的追加:

m1 = 'hello python'
f = open('test1.txt','a+')
f.write(m1)
f.close()

1.4文件的刪除

文件的刪除需要使用os模塊和os.path模塊,os模塊提供了系統(tǒng)的環(huán)境、文件、目錄等操作系統(tǒng)的函數(shù)。 對(duì)于文件來(lái)說(shuō)比較常用的os模塊的函數(shù)如下:

•os.access(path,mode)#按照mode指定的權(quán)限進(jìn)行訪(fǎng)問(wèn)
•os.chmod(path,mode)#改變文件的訪(fǎng)問(wèn)權(quán)限,mode用UNIX的權(quán)限符號(hào)表示
•os.open(filename,flag[,mode=0777])#按照mode指定的權(quán)限打開(kāi)文件。默認(rèn)情況下,給所有用戶(hù)讀、寫(xiě)、執(zhí)行的權(quán)限
•os.remove(path)#刪除path指定的文件
•os.rename(old,new)#重命名文件或目錄,old表示原文件或目錄,new表示新文件或目錄
•os.stat(path)#返回path指定文件的所有屬性
•os.fstat(path)#返回打開(kāi)文件的所有屬性
•os.startfile(filepath[,operation])#啟動(dòng)關(guān)聯(lián)程序打開(kāi)文件。例如,打開(kāi)一個(gè)html文件,將啟動(dòng)IE瀏覽器
•os.tmpfile()#創(chuàng)建一個(gè)臨時(shí)文件,文件創(chuàng)建在操作系統(tǒng)的臨時(shí)目錄中

注意:os模塊的open()函數(shù)與內(nèi)建的open()函數(shù)的用法不同。

os.path模塊常用的函數(shù)如下:

•os.path.abspath(path)#返回path所在的絕對(duì)路徑
•os.path.dirpath(path)#返回目錄的路徑
•os.path.exists(path)#判斷文件是否存在
•os.path.getatime(filename)#返回文件的最后訪(fǎng)問(wèn)時(shí)間
•os.path.getctime(filename)#返回文件的創(chuàng)建時(shí)間
•os.path.getmtime(filename)#返回文件最后的修改時(shí)間
•os.path.getsize(filename)#返回文件的大小

os.path判斷函數(shù)

•os.path.isabs(s)#測(cè)試路徑是否是絕對(duì)路徑
•os.path.isdir(path)#判斷path指定的是否是目錄
•os.path.isfile(path)#判斷path指定的是否是文件
•os.path.split(p)#對(duì)路徑進(jìn)行分割,并以列表的方式返回
•os.path.splitext(p)#從路徑中分割文件的擴(kuò)展名
•os.path.splitdrive(p)#從路徑中分割驅(qū)動(dòng)器的名稱(chēng)
•os.walk(top,func,arg)#遍歷目錄樹(shù)

示例如下:

import os
if os.path.exists('../test.txt'):
os.remove('test.txt')
print('is del')
else:
print('no')

1.5文件的復(fù)制

文件的復(fù)制有多種方法,下面我們來(lái)看一下第一種比較low的方式,就是讀寫(xiě)的方式進(jìn)行文件復(fù)制。示例如下:

#使用read()、write()實(shí)現(xiàn)文件復(fù)制
f1 = open('1.txt','r')
f2 = open('2.txt','w')
f2.write(f1.read())
f2.close()
f1.close()

第二種方法:

shutil模塊,shutil模塊是另外一個(gè)文件、目錄的管理接口,提供了一些用于復(fù)制、目錄的函數(shù)。copyfile()函數(shù)可以實(shí)現(xiàn)文件的復(fù)制,copyfile()函數(shù)的聲明如下:
shuil.copyfile(src,dst)
•src表示源文件的路徑,src是字符串類(lèi)型
•dst表示目標(biāo)文件的路徑,dst是字符串類(lèi)型
•src指向的文件復(fù)制到dst指向的文件

示例如下:

import shutil
shutil.move('1.txt','2.txt')

1.6文件的重命名

os模塊的函數(shù)rename()可以對(duì)文件或目錄進(jìn)行重命名。

import os
os.rename('1.txt','11.txt')

使用shutil中的move()函數(shù)也可以實(shí)現(xiàn)文件重命名的目的。

import shutil
shutil.move('11.txt','1.txt')

修改文件的后綴名:

import os
files = os.listdir('.')
for filename in files:
li = os.path.splitext(filename)#返回后文件名和后綴名的列表
if li[1] == '.html':
newname = li[0] + '.htm'
os.rename(filename,newname)

glob模塊用于對(duì)路徑的匹配,返回符合給定條件的文件列表。glob模塊的主要函數(shù)就是glob(),該函數(shù)返回符合同一匹配條件的多個(gè)文件。上面的呈現(xiàn)需要判斷是否為html后綴,也可以使用glob()函數(shù)直接匹配文件名稱(chēng)。 匹配代碼如下:

glob.glob('*.html')

glob還可以對(duì)路徑做更對(duì)的匹配。例如,匹配C盤(pán)中以w開(kāi)頭的目錄中所有的文本文件。

glob.glob('C:\\\w*\\*\\txt') 

1.7文件的搜索和替換

文件內(nèi)容的搜索和替換可以使用字符串的查找和替換來(lái)實(shí)現(xiàn)。例如,在htllo.txt文件中查找字符串'hello',并統(tǒng)計(jì)'hello'出現(xiàn)的次數(shù)。代碼如下:

python, equal to anything!

以上內(nèi)容給大家介紹了Python文件處理相關(guān)知識(shí),希望對(duì)大家有所幫助!

相關(guān)文章

  • python中的opencv和PIL(pillow)轉(zhuǎn)化操作

    python中的opencv和PIL(pillow)轉(zhuǎn)化操作

    這篇文章主要介紹了python中的opencv和PIL(pillow)轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Django 中間鍵和上下文處理器的使用

    Django 中間鍵和上下文處理器的使用

    這篇文章主要介紹了Django 中間鍵和上下文處理器的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Python使用latexify模塊實(shí)現(xiàn)將代碼為數(shù)學(xué)公式

    Python使用latexify模塊實(shí)現(xiàn)將代碼為數(shù)學(xué)公式

    latexify 是一個(gè)輕量級(jí)的 Python 模塊,可以將 Python 代碼轉(zhuǎn)換為 LaTeX 格式的數(shù)學(xué)表達(dá)式,這篇文章就來(lái)和大家探索一下如何使用latexify模塊實(shí)現(xiàn)將代碼為數(shù)學(xué)公式吧
    2023-12-12
  • Python 壓縮打包文件/文件夾的方法

    Python 壓縮打包文件/文件夾的方法

    本文主要介紹了Python?壓縮打包文件/文件夾的方法,分兩種類(lèi)型處理,打包文件是需要傳入文件的路徑,打包文件夾是傳入文件夾的路徑,感興趣的可以了解一下
    2023-12-12
  • Numpy中的ravel_multi_index函數(shù)用法說(shuō)明

    Numpy中的ravel_multi_index函數(shù)用法說(shuō)明

    這篇文章主要介紹了Numpy中的ravel_multi_index函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • 淺談Pycharm中的Python Console與Terminal

    淺談Pycharm中的Python Console與Terminal

    今天小編就為大家分享一篇淺談Pycharm中的Python Console與Terminal,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 探秘TensorFlow 和 NumPy 的 Broadcasting 機(jī)制

    探秘TensorFlow 和 NumPy 的 Broadcasting 機(jī)制

    這篇文章主要介紹了探秘TensorFlow 和 NumPy 的 Broadcasting 機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 修改Python的pyxmpp2中的主循環(huán)使其提高性能

    修改Python的pyxmpp2中的主循環(huán)使其提高性能

    這篇文章主要介紹了修改Python的pyxmpp2中的主循環(huán)使其提高性能,pyxmpp2是Python中使用需XMPP協(xié)議的一個(gè)常用工具,要的朋友可以參考下
    2015-04-04
  • 2020最新pycharm漢化安裝(python工程獅親測(cè)有效)

    2020最新pycharm漢化安裝(python工程獅親測(cè)有效)

    這篇文章主要介紹了2020最新pycharm漢化安裝(python工程獅親測(cè)有效),文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • PyQt5 QListView 高亮顯示某一條目的案例

    PyQt5 QListView 高亮顯示某一條目的案例

    這篇文章主要介紹了PyQt5 QListView 高亮顯示某一條目的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論