python基礎09

5.2文件的讀寫

5.2.1讀數據

(1)read

使用read(num)可以從文件中讀取數據,num表示要從文件中讀取的數據的長度(單位是字節),如果沒有傳入num,那麼就表示讀取文件中所有的數據

如果讀了多次,那麼後面讀取的數據是從上次讀完後的位置開始的

(2)readlines

就像read沒有參數時一樣,readlines可以按照行的方式把整個文件中的內容進行一次性讀取,並且返回的是一個列表,包含換行符\n,其中每一行的數據爲一個元素

(3)readline

每次讀一行

5.2.2寫數據write

使用write()可以完成向文件寫入數據。如果文件不存在那麼創建,如果存在那麼就先清空,然後寫入數據

5.3文件指針

(1)tell()

可用來顯示文件指針的位置,字符數(windows系統中每行末尾會加上\r\n,(\r表示回行首,\n表示換行),但用read去讀的時候只會讀\n,不會讀\r。

(2)seek()

seek(偏移量,whence) # 更改文件指針的位置

其中,偏移量在python3中是數字且僅能是正值,距離whence的字符數;whence可以取三個值:0:文件開頭;1:當前位置;2:文件結尾

總結:文件指針操作都包含\r\n(Windows中),但讀數據的時候只包含\n

5.4查看文件信息

print(f.name) #查看文件名

print(f.mode) #查看訪問權限

print(f.encoding) #查看編碼方式

print(f.closed) #檢查文件是否關閉,返回True或者False

print(f.readable)

print(f.writeable)

5.5清空緩衝區(瞭解)

f.flush()

#清空緩衝區域(釋放這個區域,將來可以分配任何數據),將緩衝區數據寫入到硬盤

5.6操作目錄(文件的相關操作)(os模塊)

路徑:相對路徑(從當前位置出發)和絕對路徑(以盤符出發)

文件的相關操作:

# 查看當前文件所在路徑

import os

file_path = os.getcwd()

print(file_path)

 

# 查看某個路徑下的所有文件---返回一個列表

list1 = os.listdir(r'C:\Users') #./表示當前路徑

print(list1)

 

#改變文件的操作路徑

os.chdir('../')#小括號裏可以是任意想操作的路徑

 

#創建單個文件夾

os.mkdir('aaa')

 

#遞歸創建文件夾

os.makedirs(r'aaa\bbb\ccc')

 

#刪除ccc

os.rmdir(r'aaa\bbb\ccc')

 

注意:os模塊不允許遞歸刪除(即:aaa不爲空),想要遞歸刪用shutil()(慎用)

import shutil

shutil.rmtree(r'aaa')

 

#重命名rename(文件名,改成什麼名字)

os.rename('原文件名',‘要改成的名字’)

 

#刪除文件1.txt

os.remove('1.txt')

5.7文件批量重命名

# 把code文件夾的所有文件重命名爲 daqiu....

# 把這個路徑下的所有文件先查找到 -- 遍歷所有文件 :有一個新的名字daqiu.. rename(舊,新)

import os
    os.chdir(r"C:\Users\GZC\Desktop\new")
    path = os.getcwd()
    list1 = os.listdir(path)
    print(list1)
for temp in list1:
    newname = 'daqiu' + temp
    os.rename(temp,newname)
#用切片法可以還原到原來的,如下:
import os
path = os.chdir(r'C:\Users\GZC\Desktop\new')
list1 = os.listdir(path)
print(list1)
for name in list1:
    if name.startswith('daqiu'):
    newname = name[5:]
    os.rename(name,newname)

5.8備份任意文件

import os
file_list = os.listdir('./') #如果想備份其它地方的數據,需用到chdir()
print(file_list)
file_name = input('請輸入要備份的文件名:')
if file_name in file_list:
    index = file_name.rfind('.')
    new_name = file_name[:index] + "_backup" + file_name[index:]
    src_f = open(file_name, 'rb') # 音頻文件,所以要二進制模式打開
    new_f = open(new_name, 'ab')
    while True:
        # 找一個變量保存每次讀取的數據
        data = src_f.read(1024 * 1024)
        if len(data) == 0:
            break
        new_f.write(data)
    new_f.close()
    src_f.close()
else:
    print('文件不存在')

 

發佈了51 篇原創文章 · 獲贊 2 · 訪問量 5932
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章