如何在文件内重命名文件?文件操作文件操作的作用就是把一些内容(數據)存儲存放起來,可以讓程序下一次執行的時候直接使用,而不必重新制作一份,省時省力,接下來我們就來聊聊關于如何在文件内重命名文件?以下内容大家不妨參考一二希望能幫到您!
文件操作
文件操作的作用就是把一些内容(數據)存儲存放起來,可以讓程序下一次執行的時候直接使用,而不必重新制作一份,省時省力。
1、文件操作步驟
1)打開文件
2)讀寫等操作
3)關閉文件注意:可以隻打開和關閉文件,不進行任何讀寫操作。
2.1 打開
在python中使用open函數,可以打開一個已經存在的文件,或者創建一個新文件,
語法:open(name, mode)
name:要打開的目标文件名的字符串(可以包含文件所在的具體路徑)。
mode:設置打開文件的模式(訪問模式):隻讀、寫入、追加等。
|
模式 |
描述 |
|
r |
以隻讀方式打開文件,文件的指針将會放在文件的開頭,這個是默認模式。 |
|
rb |
以二進制格式打開一個文件用于隻讀。文件指針放在文件的開頭,這是默認模式。 |
|
r |
打開一個文件用于讀寫,文件指針放在文件的開頭。 |
|
rb |
以二進制格式打開一個文件用于讀寫。文件指針将會放在文件的開頭。 |
|
w |
打開一個文件隻用于寫入。如果文件已經存在則打開文件,并從開頭開始編輯。即原有内容會被删除。如果文件不存在,則創建新文件。 |
|
wb |
以二進制格式打開一個文件隻用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有内容被删除。如果該文件不存在,則創建新文件。 |
|
w |
打開一個文件用于讀寫。如果該文件已經存在則打開文件,并從頭開始編輯,即原有内容被删除。如果該文件不存在,則創建新文件。 |
|
wb |
以二進制打開一個文件并用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有内容會被删除。如果該文件不存在,則創建新文件。 |
|
a |
打開一個文件用于追加。如果該文件已經存在,文件指針将會放在文件的結尾。也就是說新的内容将會寫入到已經存在的文件。如果文件不存在,則創建新文件進行寫入。 |
# 創建一個文件
# 1、打開open()
f = open('text.txt', 'w')
# 讀寫操作write() read()
f.write('Hello World!')
# 關閉close()
f.close()
"""
測試目标
1、訪問模式對文件的影響
2、訪問模式對write()的影響
3、訪問模式是否可以省略
"""
# r: 如果文件不存在、報錯: 不支持寫入,表示隻讀
# f = open('text1.txt', 'r')
# f.write('abcd') # 報錯
# f.close()
# w: 隻寫,如果文件不存在,新建文件;如果存在執行寫入,會覆蓋原有内容。
f = open('text2.txt', 'w')
f.write('abcd') # abcd
f.close()
# a: 隻寫,如果文件不存在,新建文件;如果存在執行追加。
f = open('text2.txt', 'a')
f.write('xyz') # abcd
f.close()
# 訪問模式可以省略,如果省略,默認為r,文件必須存在,如果不存在會報錯。
f = open('text2.txt')
f.close()
2.2 read()讀
格式:文件對象.read(num)
num标識要從文件中讀取的數據的長度(單位是字節),如果沒有傳入num,那麼就标識讀取文件中所有的數據。
注意:文件内容如果有換行,底層有、n,會有字節站位,導緻read書寫參數讀取出來的和看到的個數不一樣。
# read()
f = open('text1.txt', 'w')
f.write('1234567890abcd')
f.close()
f = open('text1.txt', 'r')
print(f.read(12))
f.close()
2.2.1 readlines()
readlines可以按照行的方式把整個文件中的内容進行一次性讀取,并且返回的是一個列表,其中每一個行的數據為一個元素。
# readlines()
f = open('text1.txt', 'w')
f.write('1234\n5678\n90abcd')
f.close()
f = open('text1.txt')
content = f.readlines()
print(content) # ['1234\n', '5678\n', '90abcd']
f.close()
2.2.2 readline()
readline一次讀取一行内容
# readlines()
f = open('text1.txt', 'w')
f.write('1234\n5678\n90abcd')
f.close()
f = open('text1.txt')
content = f.readline()
print(content) # 1234
content = f.readline()
print(content) # 5678
content = f.readline()
print(content) # 90abcd
f.close()
"""
1、測試r 和 w 區别:
2、文件指針對數據讀取的影響
"""
f = open('text.txt', 'w')
f.write('abcd') # abcd
f.close()
# r ; r沒有的文件則報錯,文件指針在開頭,所以能讀取出來數據
f = open('text.txt', 'r ') # 執行成功
# f = open('text10.txt', 'r ') # text10文件不存在,報錯
# w :沒有該文件則會新建文件;w特點:文件指針在開頭,用新内容覆蓋原内容。
f = open('text1.txt', 'w ')
con = f.read()
print(con) # 輸出空内容
# a : 沒有文件會新建文件,文件指針在結尾,無法讀取數據(文件指針後面沒有數據)
f = open('text.txt', 'a ')
con = f.read()
print(con) # 輸出空内容
#
f.close()
2.2 seek()
用于移動文件的指針
格式:文件對象.seek(偏移量,起始位置)
起始位置:
f = open('text.txt', 'w')
f.write('aaa\nbbb\nccc\nddd\n') # abcd
f.close()
# # r r改變文件指針位置:改變讀取數據開始位置火把文件指針放結尾
# f = open('text.txt', 'r ')
# # f.seek(2, 0) # 改變讀取數據位置,開始位置,向後偏移2
# # f.seek(0, 2) # 改變讀取數據位置,結束位置,偏移0
# con = f.read()
# print(con)
# a 改變文件指針位置,做到可以讀取出來數據。
f = open('text.txt', 'a ')
f.seek(1, 0) # 改變讀取數據位置,開始位置,向後偏移1
# f.seek(0) 同f.seek(0,0)
con = f.read()
print(con)
f.close()
3 文件備份
3.1 文件備份步驟
f = open('白月光.txt.mp3', 'w')
f.write('aaa\nbbb\nccc\nddd\n') # abcd
f.close()
# 1、接收用戶輸入目标文件名。 白月光.txt.mp3
old_name = input("請輸入需要備份的文件的名字:")
print(old_name) # 白月光.txt.mp3
# 2、規劃備份文件的名字。
# 2.1 提取目标文件後綴 - - 找到名字中的點 将名字和後綴分離。最右側的點才是後綴的點,字符串中查找某個子串rfind
index = old_name.rfind('.')
# print(index) # 7
# 優化方案:如果文件名為空,如.txt是一個無效文件,需要添加一個判斷。
if index > 0:
postfix = old_name[index:]
# 2.2 組織新名字 = 原名字 []備份的文件名,xx[備份]後綴
# 原名字就是字符串中的一部分子串 - - 切片[開始;結束;步長]
new_name = old_name[0:int(index):1] '[備份]' postfix
print(new_name) # 白月光.txt[備份].mp3
# 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
# 3.3 關閉文件
old_f.close()
new_f.close()
4 文件和文件夾的操作
在Python中文件和文件夾的操作要借助os塊裡面的相關功能,具體步驟如下:
4.1 文件重命名
語法:os.rename(目标文件名, 新文件名)
4.2 删除文件
語法:os.remove(目标文件名)
4.3 創建文件夾
語法:os.mkdir(文件夾名稱)
4.4 删除文件夾
語法:os.rmdir(文件夾名稱)
4.5 獲取當前目錄
語法:os.getcwd()
4.6 改變默認目錄
語法:os.chdir(目錄)
4.7 獲取目錄列表
語法:os.listdir(目錄)
import os
f = open('text.txt', 'w')
f.write('aaa\nbbb\nccc\nddd\n') # abcd
f.close()
# 1、rename():重命名
os.rename('text.txt', 'new_text.txt')
# 2、remove():删除文件
os.remove('new_text.txt')
# 3、創建文件夾
os.mkdir('新文件夾')
# 4、删除文件夾
os.rmdir('file1')
# 5、獲取當前目錄
os.getcwd()
# 6、改變默認路徑
os.chdir('file2')
# 7、獲取某個文件夾下所有文件,返回一個列表
os.listdir('file1')
# 8、重命名文件夾
os.rename('file2', 'new_file')
4 應用案例
# 需求1:将aa文件夾内所有文件重命名
import os
# 1、找多所有文件,獲取aa文件夾的目錄列表。
os.chdir('Python Project/aa')
file_list = os.listdir()
print(file_list)
# 2、将原有文件名添加/删除指定字符串,構造名字
for i in file_list:
# 新名字 = ‘python’ '原名字'
new_name = 'python_' i
# 3、重命名
os.rename(i, new_name)
# 需求2:删除python_,重命名:1,構造條件的數據 2,書寫if
import os
# 構造條件的數據
flag = 2
# 1、找多所有文件,獲取aa文件夾的目錄列表。
os.chdir('Python Project/aa')
file_list = os.listdir()
print(file_list)
# 2、将原有文件名添加/删除指定字符串,構造名字
for i in file_list:
if flag == 1:
# 新名字 = ‘python’ '原名字'
new_name = 'python_' i
elif flag == 2:
num = len('python_')
new_name = i[num:] # 新名字從num切片
# 3、重命名
os.rename(i, new_name)
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!