一、将一个文件,复制到另外一个副本中
步骤:
1.打开旧文件,读出
2.打开新文件,读入
3.关闭两文件
open(‘d.txt’,‘r’,encoding = ‘utf-8’)
import os
os.chdir('files') #进入当前目录下的files文件夹
source_file = open('d.txt','r',encoding = 'utf-8') #以utf-8编码进行处理
dst_file = open('d_bat.txt','a',encoding = 'utf-8') #保证两个文件的编码是一致的
content = source_file.read()
dst_file.write(content)
source_file.close()
dst_file.close()
二、对大文件进行复制
为了节省内存,每次复制只复制1024个字节
import os
os.chdir('files') #进入当前目录下的files文件夹
source_file = open('d.txt','r',encoding = 'utf-8')
dst_file = open('d_bat.txt','a',encoding = 'utf-8')
#content = source_file.read() 全部复制出来,占的内存大
#dst_file.write(content)
while True:
content = source_file.read(1024) #每次只读1024个字节
if len(content) == 0:
break
dst_file.write(content)
source_file.close()
dst_file.close()
三、文件分类
给定一批文件a.avi b.jpg c.jpg d.txt e.avi f.txt
按照文件后缀名,划分到不同的文件夹中,例如a.avi与e.avi进入avi文件夹中。。
步骤:
0.获取所有的文件名称列表
1.遍历所有文件(文件名称)
2.分解出后缀名
3.如果对应文件名存在,则移动进去。若不存在则创建该名称的目录
文件名.rfind(‘.’)—从由查找.,返回找到的第一个.的索引值
os.path.exists(extension) #查找是否存在extension
import os
import shutil
#容错处理,如果路径不存在,直接退出运行
path = 'files'
if not os.path.exists(path):
exit()
os.chdir('files') #切换好到目标目录下
file_list = os.listdir('./') #获取当前文件下的所有文件名称
for file_name in file_list:
#print(file_name) 每写一步打印一下检查
index = file_name.rfind('.') #查找最后一个.的索引位置
#容错处理,如果没查找到挑出此循环
if index == -1:
continue
#print(index)
extension = file_name[index:] #切片截取
#判断是否存在extension文件夹
if not os.path.exists(extension):
os.mkdir(extension) #不存在即创建
shutil.move(file_name,extension) #移动文件名file_name进入文件夹名extension
四、生成文件清单
继续三,列出文件夹以及文件夹中的文件名称,即返回所有子文件夹以及子子文件
步骤:
1.列举出,当前给定的文件夹,下所有子文件与子文件夹。(例如listfiles函数实现)
2.针对列举出的列表进行遍历
3.判定,是否是目录,是—则再运行一下listfiles函数
os.path.isdir(new_filename) – 判断new_filename是否是文件夹
import os
#file_list = os.listdir('files') 返回文件夹files下的子文件名称,但不会返回子子文件夹名称。即只有一级不能多级
def listfiles(dir):
file_list = os.listdir(dir)
#print(file_list) 打印出来查看一下
for file_name in file_list:
new_filename = dir + '/'+file_name #需要拼接一下,改变路径
if os.path.isdir(new_filename):
print(new_filename)
listfiles(new_filename)
else :
print('\t'+file_name) #针对文件名称,专门加一个缩进,与文件夹名区别开
print('') #对每一组下,加一个空行区分出来
listfiles('files') #列出files文件夹下的所有子/子子文件夹与文件名称
最终输出:
五、将四输出结果写入文件
根据四的代码进行修改,把原本要输出的,改为写入文件中
import os
#将函数为:将dir写入新文件
def listfilesToTxt(dir,file):
file_list = os.listdir(dir)
for file_name in file_list:
new_filename = dir + '/'+file_name #需要拼接一下,改变路径
if os.path.isdir(new_filename):
file.write(new_filename)
listfilesToTxt(new_filename,file)
else :
file.write('\t'+file_name+'\n')
#print('') #对每一组下,加一个空行区分出来
file.write('\n') #写入\n换行,,类似输出的print('')
f = open('list.txt','a')
listfilesToTxt('files',f)
list.close()