python 文件处理二
01文件备份系统
需求:输入文件的名字,然后程序自动完成对文件进行备份
oldFileName = input(“请输入要拷贝的文件名字:”)
oldFile = open(oldFileName,‘r’)
#如果打开文件
if oldFile:
提取文件的后缀
fileFlagNum = oldFileName.rfind(’.’)
if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]
#组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + ‘[复件]’ + fileFlag
创建新文件
newFile = open(newFileName, ‘w’)
#把旧文件中的数据,一行一行的进行复制到新文件中
for lineContent in oldFile.readlines():
newFile.write(lineContent)
关闭文件
oldFile.close()
newFile.close()
练习 备份文件夹里的所有文件
import os
def copy_file(oldFileName):
#定位后缀名符号.的位置
fileNameFlag = oldFileName.rfind(’.’)#-1
#切片后缀名 包括.
nameHouZhui = oldFileName[fileNameFlag:]#[-1:]
#切片文件名 不包括.
fileName = oldFileName[:fileNameFlag]#[:-1]
#生成新文件名
newFileName = fileName + ‘(1)’ + nameHouZhui
#生成一个新文件
newFileOpen = open(newFileName,‘w’)
#打开旧文件
oldFileOpen = open(oldFileName,‘r’)
#通过循环以行为单位写入
for line in oldFileOpen.readlines():
newFileOpen.write(line)
newFileOpen.close()
oldFileOpen.close()
def copy_dir(oldFileName):
#进入子路径后,当前的操作路径要改变
global baseDir
baseDir += ‘/’ + oldFileName
os.chdir(os.getcwd()+’/’+oldFileName)
files = os.listdir(baseDir)
#获取当前路径的文件信息后,开始拷贝
start_copy()
def start_copy():
#因为在深入复制的过程中,操作的路径不断变化,所以
#要在方法中修改全局变量的值
global baseDir
#用局部变量标记当前的操作记录
#当深入的层数较多时,返回上一层是要记住上一层的操作路径
startDir = baseDir
fileList = os.listdir(startDir)
for oldFileName in fileList:
os.chdir(startDir)
if os.path.isfile(oldFileName):
copy_file(oldFileName)
else:
baseDir = startDir
copy_dir(oldFileName)