# 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)