一、将一个文件,复制到另外一个副本中

步骤:
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文件夹下的所有子/子子文件夹与文件名称

最终输出:

python 同时运行2个python python运行两个文件_文件名

五、将四输出结果写入文件

根据四的代码进行修改,把原本要输出的,改为写入文件中

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