python-study-文件操做

# 1、文件操做的做用 :讀取內容、寫入內容、備分內容。。。。python

# 文件的基本操做,文件操做包含:打開、關閉、讀、寫、複製。。。。ide

#     打開   讀寫     關閉函數

# 文件備份post

# 文件和文件夾的操做測試

# 總結:文件操做的做用就是把一些內容(數據)存儲起來,可讓程序下一次執行的時候直接使用,而沒必要從新制做一份,省時省力指針

# 2、 文件的基本操做對象

# 2.1 文件操做步驟:1 打開文件  2 讀寫文件  3 關閉文件rem

# 注意:能夠只打開和關閉文件,不進行任何讀寫操做字符串

# 2.1.1 使用open函數能夠打開一個已經存在的文件,或者建立一個新文件,語法:get

# open(file_name,mode)

# file_name:是要打開的文件名的字符串(能夠包含文件所在的具體路徑)

# mode:設置打開文件的模式(訪問模式):只讀、寫入、追加等

# 2.1.2 體驗

# 打開 open()

f = open('test.txt','w')

# 讀寫操做 write()  read()

f.write('aaa\n')

f.write('bbb\n')

f.write('ccc\n')

f.write('ddd')

# 關閉close()

f.close()

"""

測試目標:

   1.訪問模式對文件的影響

   2.訪問模式對write()的影響

   3.訪問模式是否能夠省略

"""

# r 只讀

# f = open('test1.txt','r') # 若是文件不存在則報錯,不支持寫入操做,表示只讀

f = open('test.txt','r')

# f.write('test')

f.close()

# w 只寫

f = open('1.txt','w')  # 若是文件不存在則新建一個文件

f.write('aaa') # 執行寫入時,會覆蓋原有內容

f.close()

# a 追加

f = open('2.txt','a') # 若是文件不存在,新建文件

f.write('aaa')

f.write('bbb') # 在執行數據寫入時,在文件內容的末尾處追加內容

f.close()

# 訪問模式是否能夠省略 ,若是訪問模式省略,默認的訪問模式爲r

# f = open('100.txt')

# f.close()

# 2.1.2.2 read()

# 文件對象.read(num)

# num表示要從文件中讀取的數據的長度(單位是字節),若是沒有傳入num,那麼就讀取文件中全部的數據

f = open('test.txt','r')

# print(f.read(10)) # 文件中有回車符,\n佔兩個字符

# readlines()能夠按照行的方式把整個文件的內容進行一次性讀取,而且返回一個列表,其中每一行的數據爲一個元素

content = f.readlines() # ['aaa\n', 'bbb\n', 'ccc\n', 'ddd\n']

print(content)

f.close()

# readline()一次讀取一行內容

f = open('test.txt','r')

con = f.readline()

print(con)

con = f.readline()

print(con)

con = f.readline()

print(con)

f.close()

"""

 測試目標:

   1. r+和w+ 區別

   2.文件指針對數據讀取的影響

"""

f = open('test.txt','r+') #若是文件不存在,則報錯;文件指針在開頭,因此能讀取出來數據

con = f.read()

print('-'*20)

print(con)

f.close()

# w+,若是文件不存在,則新建一個文件

# print('w+-------------')

# f = open('test.txt','w+')

# con = f.read()

# print(con) # 結果爲空,文件內容被覆蓋爲空值

# f.close()

# a+ :沒有該文件會新建文件;a+ 文件指針在結尾,沒法讀取數據(文件指針後面沒有數據)

f = open('test.txt','a+')

print(f.read()) # 結果爲空

f.close()

# seek():用來移動文件指針

# 語法:文件對象.seek(偏移量,起始位置)

# 起始位置:0 文件開頭  1 當前位置  2 文件結尾

# 目標: 1. r模式是改變文件指針位置:改變讀取數據開始位置或吧文件指針放結尾(沒法讀取數據)

# 2. a模式改變文件指針位置,作到能夠讀取出來數據

f = open('test.txt','r+')

# 文件指針放在當前位置,偏移量爲2

# f.seek(2,0)

# 把文件指針放在文件結尾

f.seek(0,2)

print(f.read()) # 讀取的數據爲空

f.close()

# a模式下,改變指針位置,讀取出來文件數據

f = open('test.txt','a+')

f.seek(0,0)

print('seek----------a+')

print(f.read()) # 讀取出文件內容

f.close()

# 3、文件備份

# 需求:用戶輸入當前目錄下任意文件名,程序完成對該文件的備份功能(備份文件名爲xx[備份]後綴,例如:test[備份].txt)

# 3.1 步驟

   # 1. 接受用戶輸入的文件名 xx.xx.xxxx.xxx...mp3

old_name = input('請輸入要備份的文件名')

print(old_name)

   # 2. 規劃備份文件名

   # 2.1 提取後綴  --  找到名字中的點  -- 名字和後綴分離---在某個字符串中查找某個字符下表rfind

index = old_name.rfind('.')

# 4. 數據有效性檢驗

if index >0:

   postfix = old_name[index:]

   # 2.2 組織新名字 = 原名字+[備份]+後綴

   # 原名字就是字符串中的一部分子串  -- 切片[開始:結束:步長]

# print(old_name[:index])

# print(old_name[index:])

# new_name = old_name[:index]+'[備份]'+old_name[index:]

new_name = old_name[:index]+'[備份]'+postfix

print(new_name)

   # 3. 備份文件寫入數據

# 3.1 打開文件:打開源文件和備份文件,讀取源文件,寫入備份文件,而後關閉

old_f = open(old_name,'rb')

new_f = open(new_name,'wb')

# 3.2 源文件讀取,備份文件寫入

# 若是不肯定目標文件大小,循環讀取寫入,當讀取出來的數據沒有了終止循環

while True:

   con = old_f.read(1024)

   if len(con)==0:

       # 表示文件讀取完畢了,終止循環

       break

   new_f.write(con)

# 3.3 關閉文件

old_f.close()

new_f.close()

# 4、文件和文件夾的操做

# 在python中文件和文件夾的操做要藉助os模塊裏面的相關功能

# 1. 導入模塊

import os

# 2. 使用os模塊內函數功能

# rename():重命名 文件名和文件夾名

# os.rename('1.txt','10.txt') # 將1.txt 重命名爲10.txt

# os.remove(目標文件名) 刪除文件

# os.remove('10.txt')

# 3 建立文件夾

# os.mkdir(文件夾名字)

# os.mkdir('test') # 建立文件夾 名爲test,當存在此文件夾時,返回錯誤

# os.rmdir('test') # 刪除文件夾 名爲test,當文件夾不存在時,返回錯誤

# 4 獲取當前目錄

print(os.getcwd()) # 返回當前文件所在目錄

# 5 改變默認目錄

# os.chdir(目錄)

# os.chdir()  #改變所在目錄

# 6 listdir():獲取某個文件夾下全部文件,返回一個列表

# print(os.listdir())  #無參數是默認獲取當前文件夾下的全部文件,返回一個列表

# print(os.listdir('c:\\')) # 獲取c盤下的全部文件,返回一個列表

# 5、應用案例:批量重命名

file_name_list = os.listdir('E:\\test')

print('--'*30)

print(file_name_list)

os.chdir('E:\\test') #改變目錄至e:\\test下,不然找不到相關文件

for i in file_name_list:

   # new_name = 'Python_Study_'+i

   new_name = i[13:]

   print(new_name)

   os.rename(i,new_name)

相關文章
相關標籤/搜索