Python學習筆記3 IO程式設計

2021-08-20 21:07:37 字數 1960 閱讀 9401

檔案讀寫

讀檔案:

with open('/path/to/file', 'r') as f:

print(f.read())

呼叫read()會一次性讀取檔案的全部內容,如果檔案有10g,記憶體就爆了,所以,要保險起見,可以反覆呼叫read(size)方法,每次最多讀取size個位元組的內容。另外,呼叫readline()可以每次讀取一行內容,呼叫readlines()一次讀取所有內容並按行返回list。因此,要根據需要決定怎麼呼叫。

for line in f.readlines():

print(line.strip()) # 把末尾的'\n'刪掉

寫檔案:

with open('/users/michael/test.txt', 'w') as f:

f.write('hello, world!')

'r' 為唯讀模式,'w'為只寫模式,'a'為附加模式

os模組

操作檔案和目錄的函式一部分放在os模組中,一部分放在os.path模組中

# 檢視當前目錄的絕對路徑:

>>> os.path.abspath('.')

'/users/michael'

# 在某個目錄下建立乙個新目錄,首先把新目錄的完整路徑表示出來:

>>> os.path.join('/users/michael', 'testdir')

'/users/michael/testdir'

# 然後建立乙個目錄:

>>> os.mkdir('/users/michael/testdir')

# 刪掉乙個目錄:

>>> os.rmdir('/users/michael/testdir')

os.path.split():拆分路徑,把乙個路徑拆分為兩部分,後一部分總是最後級別的目錄或檔名

os.path.splitext():可以直接讓你得到副檔名

>>> os.path.split('/users/michael/testdir/file.txt')

('/users/michael/testdir', 'file.txt')

>>> os.path.splitext('/path/to/file.txt')

('/path/to/file', '.txt')

檔案操作:

# 對檔案重新命名:

>>> os.rename('test.txt', 'test.py')

# 刪掉檔案:

>>> os.remove('test.py')

編寫乙個程式,能在當前目錄以及當前目錄的所有子目錄下查詢檔案名包含指定字串的檔案,並列印出相對路徑。

# 在當前目錄以及當前目錄的所有子目錄下查詢檔案名包含指定字串的檔案,並列印出相對路徑。

import os

def query(pathstr,querystr):

for x in os.listdir(path=pathstr):

abspath =os.path.join(pathstr,x)

if os.path.isfile(abspath):

if querystr in x:

print(abspath)

if os.path.isdir(abspath):

query(abspath,querystr)

query(r"d:\python_work","io")

c primer 學習筆記 3 IO

1.io物件不能拷貝或賦值 ofstream out1,out2 out1 out2 錯誤 不能對流物件賦值 ofstream print ofstream 錯誤 out2 print out2 錯誤因此通常以引用方式傳遞和返回流。讀寫乙個物件通常會改變其狀態,所以不能是const referenc...

STM32學習筆記3 IO配置輸入輸出

stm32的io配置時沒什麼特殊的,有個注意點就是實用io前需要先開啟其時鐘線,以下是驗證過ok的程式 rcc apb2enr gpiobapb2enren 使能portb時鐘 gpiob crl gpiobitclrm5 13 io的模式清零 gpiob crl gpiobit5pp 推挽輸出 g...

python學習筆記 IO程式設計

由於cpu和記憶體的速度遠遠高於外設的速度,所以,在io程式設計中,就存在速度嚴重不匹配的問題。舉個例子來說,比如要把100m的資料寫入磁碟,cpu輸出100m的資料只需要0.01秒,可是磁碟要接收這100m資料可能需要10秒,怎麼辦呢?有兩種辦法 第一種是cpu等著,也就是程式暫停執行後續 等10...