MSCBSC 移動通信論壇
搜索
登錄注冊
網(wǎng)絡(luò)優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實(shí)習(xí)生/應(yīng)屆生招聘職位

  • 閱讀:64640
  • 回復(fù):0
PYTHON學(xué)習(xí)筆記【文件的操作】
細(xì)阿哥
中級會員
鎵嬫満鍙風(fēng)爜宸查獙璇? style=


 發(fā)短消息    關(guān)注Ta 

積分 500
帖子 100
威望 9542 個
禮品券 15 個
專家指數(shù) 0
注冊 2009-2-25
專業(yè)方向  通信
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2019-10-28 08:58:07  只看樓主 

1     文件的操作

操作文件的整體過程(IO操作)

1.      打開或新建一個文件

2.      /寫數(shù)據(jù)

3.      關(guān)閉文件

 

打開文件

PYTHON,使用OPEN函數(shù)可以打開或創(chuàng)建一個新文件

open(文件名,訪問模式)

例如:

F=open(‘test.txt’,’w’)

訪問模式

說明

r

打開只讀文件,該文件必須存在(默認(rèn)模式)。

w

打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件。

a

以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。

r+

打開可讀寫的文件,該文件必須存在。

w+

打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。

a+

以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。

上述的形態(tài)字符串都可以再加一個b字符,如rb、w+bab+等組合,加入b字符用來告訴函數(shù)庫打開的文件為二進(jìn)制文件,而非純文字文件。不過在POSIX系統(tǒng),包含Linux都會忽略該字符。文件分為文本文件和二進(jìn)制文件(PDF,WORD,圖片)

 

關(guān)閉文件COLSE

1

f=open("test.txt",'w'#在當(dāng)前路徑(相對路徑)創(chuàng)建文件
f=open("d:\test.txt",'w'#在某個路徑(絕對路徑)創(chuàng)建文件
f.close()

 

文件的讀寫

*  文件的寫:write()

*  文件的讀:read([參數(shù)])  參數(shù)表示讀多少個字節(jié)

1

 

f=open("test.txt",'w'#在當(dāng)前路徑(相對路徑)創(chuàng)建文件
#f=open("d:\test.txt",'w')  #在某個路徑(絕對路徑)創(chuàng)建文件
f.write("hello world")
f.close()

 

2

 

f=open("test.txt",'r')
content=f.read()
#形參為空表示讀全部內(nèi)容
#content=f.read(5)#形參5表示讀5個字節(jié)內(nèi)容
print(content)
f.close()

 

*  讀數(shù)據(jù)(readlines)

就像read沒有參數(shù)時一樣,readlines可以按照行的方式把整個文件中的內(nèi)容一次性讀取并且返回的是一個列表,其中每一行的數(shù)據(jù)為一個元素。

*  讀數(shù)據(jù)(readline)

readline每次讀取一行數(shù)據(jù)

 

3:文件的復(fù)制

source_file = "/home/arvin/python-3.7.2-amd64.exe"
dest_file = "copy-"+source_file[source_file.rfind("/")+1:] #復(fù)制到當(dāng)前目前,并重命>   
print("目標(biāo)文件名:%s"%dest_file)
#打開文件
source_f = open(source_file,'rb')
dest_f =
open(dest_file,'wb')

#讀取原始文件
content = source_f.read()

#把讀取的內(nèi)容寫到目標(biāo)文件
dest_f.write(content)

#關(guān)閉文件
source_f.close()
dest_f.close

 

 

*  讀取文件時,定位的位置tell()

*  定位到某個位置seek(offset,from)

n  Offset:偏移量

n  From方向

       0表示文件開頭

       1表示當(dāng)前位置

       2表示文件末尾

 

In [1]: ls                                                                          

01-for.py  03-name.py  04-for三角.py

 

In [2]: f=open("01-for.py",'rb')         #打開文件

 

In [3]: c1=f.read(3)                 #讀取前3個字節(jié)

 

In [4]: c1                                                                          

Out[4]: b"'''"

 

In [5]: post1=f.tell()              #顯示位置

 

In [6]: post1                                                                       

Out[6]: 3

 

In [7]: c2=f.read(10)        #再讀取10個字節(jié)

 

In [9]: c2                                                                          

Out[9]: b' for i in '

 

In [10]: f.seek(0,0)           #將讀取的位置設(shè)置為從0開始

Out[10]: 0

 

OS模塊

OS模塊包含普遍的操作系統(tǒng)功能,與平臺無關(guān),常用命令如上:

1.      os.name()——判斷現(xiàn)在正在使用的平臺,WINDOWS返回NT,linux返回POSIX

2.      os.rename(需要修改的文件名,新的文件名),也可以做剪切

3.      os.getcwd——當(dāng)前的工作目錄

4.      os.listdir()——指定所有目錄下所有的文件和目錄名,以列表的形式全部列舉出來,沒有區(qū)分目錄和文件

5.      os.remove——刪除指定文件

6.      os.rmdir()——刪除指定目錄,該目錄不能為空

7.      os.mkdir()——創(chuàng)建目錄,只能建立一層,遞歸建立可用os.makedirs()

8.      os.path.isfile()——判斷指定對象是否為文件。是返回TRUE,否則FALSE

9.      os.path.isdir()——判斷指定對象是否為 目錄。是返回TRUE,否則FALSE

10.   os.path.exists()——檢驗(yàn)指定的對象是否存在。是返回TRUE,否則FALSE

11.   os.path.split()——返回路徑的目錄和文件名

 

In [30]: os.path.split("/home/arvin/python/01-for.py")                              

Out[30]: ('/home/arvin/python', '01-for.py')

 

12.   os.getcwd()——獲取當(dāng)前工作的目錄

13.   os.system()——執(zhí)行SHELL命令

14.   os.chdir()——改變目錄到指定目錄

15.   os.path.getsize()——獲得文件大小,如果為目錄,返回0

16.   os.path.abspath()——獲得絕對路徑

17.   os.path.join(path,name)——連接目錄和文件名

18.   os.path.basename(path)——返回文件名

19.   os.path.dirname(path)——返回文件所在目錄

 

例1,    批量重命名

 

import os
tpath=
"test"
sourcePath=os.path.abspath(tpath)  #動態(tài)獲得絕對路徑
file_list=os.listdir(sourcePath)
for f in file_list:
    source_file=os.path.join(sourcePath
,f)
   
print('源名稱:%s'%source_file,end='')
    dest_file=os.path.join(sourcePath
,"re-"+f)
   
print(' 目標(biāo)名稱:%s'%dest_file)
    os.rename(source_file
,dest_file)

 

例2,    目錄的遞歸:

 

import os

def find_hello(parent_dir,file_name):
    file_abspath=os.path.join(parent_dir
,file_name)  #當(dāng)前正在處理的文件或目錄的絕對路徑
    #print(file_abspath)
   
if os.path.isdir(file_abspath):  #判斷 當(dāng)前的文件是一個目錄
       
for f in os.listdir(file_abspath):  #進(jìn)入目錄,列出目錄下所有文件列表
           
find_hello(file_abspath,f)  #遞歸調(diào)用自己本身的函數(shù)
   
else:
       
if os.path.isfile(file_abspath) and file_abspath.endswith('.py'): #如果傳入的是文件,判斷文件是否以PY結(jié)尾
           
if read_and_find_hello(file_abspath):  #讀取PY文件,查看是否包含HELLO
               
files_list.append(file_abspath)

def read_and_find_hello(py_file):
    flag=
False  #定義一個標(biāo)記變量,初始為False
   
f=open(py_file,encoding='utf-8') #打開文件
   
with f:
        line=f.readline()
#讀其中一行
       
while line:  #有內(nèi)容時進(jìn)行下一步循環(huán)
           
if 'hello' in line:
                flag=
True
                break
           
line=f.readline()
       
return flag

files_list=[]
find_hello(
'd:\','python')
print(files_list)


掃碼關(guān)注5G通信官方公眾號,免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國電信5G NTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1
  • 對本帖內(nèi)容的看法? 我要點(diǎn)評

     
    [充值威望,立即自動到帳] [VIP貴賓權(quán)限+威望套餐] 另有大量優(yōu)惠贈送活動,請光臨充值中心
    充值擁有大量的威望和最高的下載權(quán)限,下載站內(nèi)資料無憂

    快速回復(fù)主題    
    標(biāo)題
    內(nèi)容
     上傳資料請點(diǎn)左側(cè)【添加附件】

    當(dāng)前時區(qū) GMT+8, 現(xiàn)在時間是 2025-01-22 12:39:12
    渝ICP備11001752號  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務(wù)郵箱:mscbsc@163.com

    Processed in 0.329606 second(s), 13 queries , Gzip enabled
    TOP
    清除 Cookies - 聯(lián)系我們 - 移動通信網(wǎng) - 移動通信論壇 - 通信招聘網(wǎng) - Archiver