python中对文件和文件夹进行移动、复制、删除、重命名,主要依赖os模块和shutil模块,要死记硬背这两个模块的方法还是比较困难的,可以用一个例子集中演示文件的移动、复制、删除、重命名,用到的时候直接查询就行。
Key
关键词:Python 数据结构
常用的文件操作
#文件、文件夹的移动、复制、删除、重命名
#导入shutil模块和os模块
import shutil,os
#复制单个文件
shutil.copy("C:\\a\\1.txt","C:\\b")
#复制并重命名新文件
shutil.copy("C:\\a\\2.txt","C:\\b\\121.txt")
#复制整个目录(备份)
shutil.copytree("C:\\a","C:\\b\\new_a")
#删除文件
os.unlink("C:\\b\\1.txt")
os.unlink("C:\\b\\121.txt")
#删除空文件夹
try:
os.rmdir("C:\\b\\new_a")
except Exception as ex:
print("错误信息:"+str(ex))#提示:错误信息,目录不是空的
#删除文件夹及内容
shutil.rmtree("C:\\b\\new_a")
#移动文件
shutil.move("C:\\a\\1.txt","C:\\b")
#移动文件夹
shutil.move("C:\\a\\c","C:\\b")
#重命名文件
shutil.move("C:\\a\\2.txt","C:\\a\\new2.txt")
#重命名文件夹
shutil.move("C:\\a\\d","C:\\a\\new_d")
Advanced Usage
python实现对文件夹内所有特定格式文件的提取
字典可以用一个被大括号包围的以逗号分隔的键值对(key:value)列表来创建,例 如:[Math Processing Error],或者用字典构造器来构造。
import os
import shutil
path = '要提取的文件夹i地址'
new_path = '新文件地址'
for root,dirs,files in os.walk(path):
for i in range(len(files)):
if(files[i][-3:] == 'jpg'):
file_path = root + '/' + files[i]
new_file_path = new_path + '/' + files[i]
shutil.mov(file_path,new_file_path)
os模块,即系统模块。主要用于处理文件和目录,其最大的特点是可以跨平台。 os.walk()方法就是在目录中游走输出,语法格式为:
os.wlak(top[,topdown = True[,onerror = None[,followlinks = False]]]) 总共有四个参数:
- top,产生三元组:文件夹路径,文件夹名字,文件名。
- topdown,True则自上而下,False则自下而上。
- onerror,是一个函数,调用一个参数,出现错误时继续wlak或者抛出异常停止walk。
- followlinks,true时可以通过软链接访问目录。
数据集切割
使用1:6的比例切分Train/Test
import os
import shutil
path = '/Users/sousei/PycharmProjects/Project/dataset/test/b_split'
np = '/Users/sousei/PycharmProjects/Project/dataset/test/a_split'
count = 0
rand = 0
for root,dirs,files in os.walk(path,True):
print('root:%s'%root)
# print('dirs:%s'%dirs)
# print('files:%s'%files)
print(len(files))
for i in range(len(files)):
rand += 1
if(files[i][-3:] == 'jpg'):
file_path = root + '/' + files[i]
new_file_path = np + '/' + str(count) + '.jpg'
# new_file_path = np + '/' + files[i]
if(rand%7 == 0):
shutil.move(file_path,new_file_path)
print ("Move!")
count += 1