在python中有os模塊(py文件),與操作系統(tǒng)有關(guān)的模塊
這里可以完成文件的操作芬位。
使用模塊的方式:
1俘种、導(dǎo)入
2、使用模塊名. 調(diào)用出此py文件中內(nèi)容
rename 方法的使用:
#os.rename:重命名文件
# 語法:
# os.rename('源文件路徑&源文件名','目標(biāo)文件路徑&修改后文件名')
# 備注:字符串前加r是因?yàn)槁窂降闹械陌摹癨”符號(hào)對(duì)于python來說是有特殊意義的揪阶。
# 加上r可以避免因?yàn)殛P(guān)鍵符號(hào)引起的錯(cuò)誤
# r'E:\test\1_reame.txt' 等同于'E:\\test\\1_reame.txt' or 'E:/test/1_reame.txt'/1_reame.txt'
Python 對(duì)OS.rename的注釋:
import os #導(dǎo)入os模塊
import shutil #導(dǎo)入shutil模塊
os.rename(r'E:\test\1_reame.txt',r'E:\test\1_reame.txt')
運(yùn)行結(jié)果:
=======================================================
mkdir等 方法的使用:
os.mkdir:創(chuàng)建文件夾
語法:
os.mkdir('路徑文件名or文件夾名(默認(rèn)當(dāng)前路徑下創(chuàng)建)')
備注:
mkdir在創(chuàng)建文件夾的時(shí)候,上級(jí)路徑必須存在
os.makedirs:創(chuàng)建路徑樹里所有文件夾
語法:
os.makedirs('與mkdir類似')
備注:
os.makedirs是對(duì)mkdir功能的一個(gè)包涵和擴(kuò)展并徘,個(gè)人是比較推薦遣钳。
目標(biāo)路徑如果沒有文件夾扰魂,就會(huì)創(chuàng)建麦乞。
如果有文件夾就直接打開該文件夾進(jìn)行下一步創(chuàng)建。
os.mkdir(r'E:\test\666')
#在r'E:\test\'文件目錄下創(chuàng)建一個(gè)名為666的文件夾
#假若test文件夾不存在劝评,那么創(chuàng)建test\下的666文件夾就會(huì)報(bào)錯(cuò)姐直。
os.makedirs(r'E:\test\666\233\name\lol')
os.makedirs(r'E:\test\1\2\3\4')
#test文件夾下創(chuàng)建一大堆文件夾就是了,有就用蒋畜,沒就創(chuàng)声畏。沒了之前mkdir那么矯情。
運(yùn)行結(jié)果:
=======================================================
listdir等 方法的使用:
listdir:列舉此文件夾下的所有內(nèi)容
語法:
os.listdir('路徑')
備注:
ls = os.listdir(r'E:\test')
#把E:\test下的文件夾和文件全部列舉出來放到一個(gè)列表里姻成。
print(ls)
#打印這個(gè)列表
print('='*20)
print(os.getcwd())
# 查詢當(dāng)前工作目錄并打印
print('='*20)
print('='*20)
os.chdir(r'E:\test')
print('切換到文件夾:',end='')
print(os.getcwd())
# 切換到某一文件夾目錄并打印
print('='*20)
運(yùn)行結(jié)果:
=======================================================
刪:
rmdir等方法的使用:
rmdir:刪除空文件夾
語法:
os.rmdir('路徑')
備注:
刪除非空文件夾的時(shí)候插龄,會(huì)提示無法刪除。
刪除不存在的文件夾時(shí)也會(huì)提示報(bào)錯(cuò)科展。
刪除不是移到回收站均牢。
rmtree:刪除包涵內(nèi)容的文件夾
語法:
shutil.rmdir('路徑')
備注:
刪除不存在的文件夾時(shí)也會(huì)提示報(bào)錯(cuò)。
使用之前要同時(shí)導(dǎo)入shutil模塊和OS模塊包才睹。
刪除不是移到回收站徘跪。
# os.rmdir(r'E:\test\空文件夾')
刪除test路徑下名為“空文件夾”的文件
shutil.rmtree(r'E:\test\666')
#刪除test路徑下名為“666”的文件,包括刪除666文件夾里所有的內(nèi)容琅攘。
運(yùn)行結(jié)果:
=======================================================
=======================================================
知識(shí)點(diǎn)的應(yīng)用
=======================================================
批量修改文件名:
import os
import os.path
#輸入完整路徑
path = input('輸入路徑:')
#列出所有內(nèi)容
ls = os.listdir(path)
#切換工作目錄
os.chdir(path)
#遍歷
for i in ls:
#判斷是否是文件
if os.path.isfile(i):
num = i.rfind('.')
if num!=-1:
newName = i[:num]+'-new'+i[num:]
#重命名
os.rename(i,newName)
實(shí)現(xiàn)文件的復(fù)制粘貼
輸入源文件的路徑
輸入源文件的名字
輸入目標(biāo)路徑
執(zhí)行復(fù)制粘貼
要求復(fù)制到目標(biāo)路徑里垮庐,默認(rèn)是原來文件的名字,如果此名字已經(jīng)在當(dāng)前路徑里坞琴,把名字改成如下格式(需要加副本或者對(duì)應(yīng)的數(shù)字):
import os
import os.path
def main():
pathSrc = input('請(qǐng)輸入源文件的路徑:')
fileName = input('請(qǐng)輸入源文件的名字:')
pathDest = input('請(qǐng)輸入目標(biāo)文件夾的路徑:')
i = 2
while True:
if not hasFile(pathDest,fileName):
copy_paste(os.path.join(pathSrc,fileName),os.path.join(pathDest,fileName))
break
elif not hasFile(pathDest,doFileName(fileName)):
print('if......')
copy_paste(os.path.join(pathSrc,fileName),os.path.join(pathDest,doFileName(fileName)))
break
elif not hasFile(pathDest,doFileName(fileName,i)):
print('elif......')
copy_paste(os.path.join(pathSrc,fileName),os.path.join(pathDest,doFileName(fileName,i)))
break
else:
i+=1
def hasFile(path,fileName):
'''
判斷文件是否存在
path:文件所在的路徑
fileName:文件的名字
'''
return os.path.exists(os.path.join(path,fileName))
def doFileName(fileName,num=None):
'''
返回處理后文件的名字
如果num是None哨查,只拼接副本
否則,拼接副本加數(shù)字
'''
newFileName = None
index = fileName.rfind('.')
if num==None:
if index!=-1:
newFileName = '%s - 副本%s'%(fileName[:index],fileName[index:])
else:
newFileName= '%s - 副本'%fileName
else:
if index!=-1:
newFileName = '%s - 副本 (%s)%s'%(fileName[:index],num,fileName[index:])
else:
newFileName= '%s - 副本 (%s)'%(fileName,num)
return newFileName
def copy_paste(pathSrc,pathDest):
# 賦值 粘貼
fileSrc = open(pathSrc,'rb')
fileDest = open(pathDest,'wb')
content = fileSrc.readline()
while content!=b'':
fileDest.write(content)
content = fileSrc.readline()
fileSrc.close()
fileDest.close()
#執(zhí)行剧辐!
main()
print('媽嗨解恰,終于寫完了')