python中常見檔案處理命令

2021-10-07 07:21:01 字數 3512 閱讀 9786

最近一直在與資料集的讀取和處理打交道,不可避免的會用到python中檔案處理的知識點,有些函式和知識點雖然知道是怎麼回事,但是感覺掌握的還不是很牢靠,因此打算整理一下知識點,方便以後自己檢視。

在os模組下有很多檔案處理的指定,比如檔案的讀取和寫入等命令,下面就簡單介紹幾個常見的命令。

# open()函式簽名

'r'表示僅讀取檔案內容,如果你向檔案中寫入資料的話,會報錯 'io.unsupportedoperation: not writable'

'w'表示先清空檔案內容,然後再寫入資料

'a'表示在原文的末尾追加資料

模式'w+'和'w+b'表示將開啟檔案並清空檔案內容。模式'r+'與'r+b'表示開啟檔案內容但是並不清空內容,這表示你可以對檔案內容進行更新,可以寫入或者更改內容,並不會報錯。模式'a+'與'a+b'表示開啟檔案讓後在後面追加內容。

開啟檔案之後,我們可以使用一下三種方法讀取檔案的內容

with open('./test.txt') as f:

content = f.read()

# 可以配合split()函式將內容進行分割

content1 = f.read().split('/n')

with open('./test.txt') as f:

lines = f.readlines()

# 可以迴圈索引列表中的內容,並進行列印

lies = [int(i) for i in lines]

with open('./test.txt') as f:

while true:

line = f.readline()

if len(line):

print(line)

# 讀取結束

else:

break

write()函式可以向檔案中寫入字串資料(注意一定是字串資料)

with open('./test.txt') as f:

# 向檔案中寫入資料

f.write('hello world')

# 函式簽名

os.walk(top, topdown=true, onerror=none, followlinks=false)

# step1: '../data'檔案的目錄是這樣的

# step2: 遍歷資料夾,然後列印

for root_path, sub_dir_path, files_path in os.walk('../data'):

# (1)列印root_path:結果是'../data'和'../data/obj'

print(root_path)

# (2) 列印sub_dir_path: 結果是['obj']和

print(sub_dir_path)

# (3)遍歷files_path列表中所有xml檔案: 列印結果['image1.xml']

for file_path in files_path:

if file_path.endswith('xml'):

print(file_path)

root_path表示要遍歷的資料夾位址,在案例中是'../data'和'./data/obj'。因為該資料夾下仍然存在資料夾,所以依然會對子資料夾進行遍歷。

sub_dir_path表示當前資料夾下的子資料夾名稱,如果子資料夾中還存在檔案,依然迴圈列印其子檔名稱。

files_path表示當前資料夾下檔案的名稱,如果子資料夾中存在檔案,依然將其子檔案中的子檔案放在列表中進行列印。

os.listdir()函式可以獲得某個資料夾下所有檔案和資料夾的名稱(不是位址)

for path in os.listdir('../data'):

print(path)

# 輸出結果就是

# obj

# obj.data

# obj.names

在使用os.walk()函式的時候,我們可以獲得資料夾的路徑以及檔案的名稱,而在資料集中,我們需要儲存檔案的絕對路徑或者是包含當前根目錄的相對路徑,因此我們就需要對檔案位址進行拼接。

在拼接路徑的時候,我們可以使用下面os.path.join()函式,下面說明了使用該函式的注意點(借鑑了這位老哥的部落格)

1.如果各元件名首字母不包含』/』,則函式會自動加上

2.如果有乙個元件是乙個絕對路徑,則在它之前的所有元件均會被捨棄

3.如果最後乙個元件為空,則生成的路徑以乙個』/』分隔符結尾

# 案例1:如果各元件名首字母不包含』/』,則函式會自動加上

path1 = 'home'

path2 = 'develop'

path3 = 'code'

print(os.path.join(path1,path2,path3))

# 輸出是:

# home\develop\code

# 案例2:如果有乙個元件是乙個絕對路徑,則在它之前的所有元件均會被捨棄

# 這一點一定要注意!!!!!

path1 = 'home'

path2 = '/develop'

path3 = 'code'

print(os.path.join(path1,path2,path3))

# 輸出是:

# /develop/code

# 案例3:如果最後乙個元件為空,則生成的路徑以乙個』/』分隔符結尾

path1 = '/home'

path2 = 'develop'

path3 = ' '

print(os.path.join(path1,path2,path3))

# 輸出是:

# /home/develop/

linux 常見檔案處理命令

linux系統資訊存放在檔案裡,檔案與普通的公務檔案類似。每個檔案都有自己的名字 內容 存放位址及其它一些管理資訊,如檔案的使用者 檔案的大小等。檔案可以是一封信 乙個通訊錄,或者是程式的源語句 程式的資料,甚至可以包括可執行的程式和其它非正文內容。linux檔案系統具有良好的結構,系統提供了很多檔...

python中常見的資料預處理方法

以下通過sklearn的preprocessing模組 from sklearn.preprocessing import standardscaler 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。1 sklearn.prepro...

python中常見錯誤

1.手誤造成的名字錯誤 nameerror 名字錯誤 如 nameerror name pint is not defined 2.多行 不能一行寫 syntaxerror 語法錯誤 如 syntaxerror invalid syntax 3.縮排錯誤 indentationerror unexp...