python实现移动二级目录下的文件到一级目录

import os
import shutil
import sys def move_to_work_folder(work_path, cur_path):
"""
将work_folder下的所有子目录中的文件移到根目录中:
:param work_path: 当前工作目录
:param cur_path: 文件所在目录
:return:
"""
for filename in os.listdir(cur_path):
if os.path.isfile(os.path.join(cur_path, filename)):
shutil.move(os.path.join(cur_path, filename), os.path.join(work_path, filename))
elif os.path.isdir(os.path.join(cur_path, filename)):
move_work_folder(work_path, os.path.join(cur_path, filename))
else:
sys.exit("Should never reach here.")
# remove empty folders
if cur_path != work_path:
os.rmdir(cur_path) def move_to_up_folder(subpath, work_path, same_dirs):
"""
将工作目录中的二级子目录下的文件或目录移到当前工作目录,并删除旧的二级子目录内容。
:param subpath:二级目录
:param work_path:当前工作目录
:param same_dirs:工作目录下相同目录名称
:return:
"""
# 确认工作目录下是否存在相同目录
same_dir_path = os.path.join(work_path, same_dirs)
if os.path.exists(same_dir_path):
print("工作目录中存在相同目录: {}".format(same_dir_path))
# 若存在相同目录,拷贝当前二级目录的子目录到工作目录下同名目录中
for thirdir in os.listdir(subpath):
shutil.move(os.path.join(subpath, thirdir), same_dir_path)
os.rmdir(subpath)
else:
shutil.move(subpath, work_path) if __name__ == '__main__':
root_path = os.getcwd()
for subdirname in os.listdir(root_path):
# 遍历当前文件夹下的二级目录名
if os.path.isdir(os.path.join(root_path, subdirname)):
# 得到当前文件夹下的二级目录完整路径
subdirpath = os.path.join(root_path, subdirname)
# 遍历二级目录下的文件
for name in os.listdir(subdirpath):
# 导入二级目录下的文件、当前工作目录的完整路径到move_to_up_folder函数中
move_to_up_folder(os.path.join(subdirpath, name), root_path, name)
os.rmdir(subdirname)

python实现移动二级目录下的文件到一级目录的更多相关文章

  1. 安卓:从assets目录下复制文件到指定目录

    有些时候我们直接将某些资源文件内置到apk中,便于直接使用. 1.首先将文件放置在项目/app/src/main/assets目录中 2.功能代码: public void copyFile(Stri ...

  2. linux拷贝多个目录下的文件到同一个目录

    拷贝a目录下的a.txt和b目录下的b.txt到c目录 cp -a \ /root/a/a.txt \ /root/b/b.txt \ /root/c/

  3. Android复制Assets目录下的文件到指定目录

    package com.android.demo; import java.io.File; import java.io.FileOutputStream; import java.io.Input ...

  4. Java递归列出目录下全部文件

    Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...

  5. rsync+inotify 实现资源服务器的同步目录下的文件变化时,备份服务器的同步目录更新,以资源服务器为准,去同步其他客户端

    测试环境: 资源服务器(主服务器):192.168.200.95 备份服务器(客户端):192.168.200.89 同步目录:/etc/test 同步时使用的用户名hadoop密码12345 实验目 ...

  6. 将二级目录下的文件合并成一个文件的Python小脚本

    这个小程序的目的是将二级目录下的文件全部合并成一个文件(其实几级目录都可以,只要做少许改动) #coding:utf8 import sys, os def process(path): new_fi ...

  7. Python递归遍历目录下所有文件

    #自定义函数: import ospath="D:\\Temp_del\\a"def gci (path): """this is a stateme ...

  8. Python开发【笔记】:获取目录下所有文件

    获取文件 import os def sub_dirs(rdir): li = os.listdir(rdir) return li def main(rdir): content = sub_dir ...

  9. python实现指定目录下批量文件的单词计数:并发版本

    在 文章 <python实现指定目录下批量文件的单词计数:串行版本>中, 总体思路是: A. 一次性获取指定目录下的所有符合条件的文件 -> B. 一次性获取所有文件的所有文件行 - ...

  10. Python打开目录下所有文件

    用Python打开指定目录下所有文件,统计文件里特定的字段信息. 这里是先进入2017-02-25到2017-03-03目录,然后进入特定IP段目录下,最后打开文件进行统计 import os, gl ...

随机推荐

  1. 【JVM调优】Day04:总结前三日内容(GC+算法*4+简单回收器*3三色标记,CMS+G1+ZGC,参数个数+OOM+调优参数)

  2. SQL注入问题/触发器trigger/事务/事物隔离

    SQL注入问题 本质:利用特殊符号的组合产生特殊的含义,从而避开正常的业务逻辑 select * from userinfo where name='jason' -- kasdjksajd' and ...

  3. hook 无限debugger(猿人学第十四题)

    猿人学第十四题 检测太多了,debugger  fiddler替换无法实现.置空也不行.推荐使用hook  Function原生的构造 var func_ = Function.prototype.c ...

  4. 《HTTP权威指南》– 1.HTTP概述

    HTTP的概念 HTTP : Hypertext Transfer Protocol 超文本传输协议 因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都打上了名为MIME类型 ...

  5. 如何使用OpenCV+MMPEAG打开摄像头,显示的同时推送RTMP流。

    注意,设置中: 代码详解: 1. char* outUrl = "rtmp://localhost/live/livestream"; 这个地址,是AMS(Adeobe Media ...

  6. 深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」

    [易错问题]Major GC和Full GC的区别是什么?触发条件呢? 相信大多数人的理解是Major GC只针对老年代,Full GC会先触发一次Minor GC,不知对否?我参考了R大的分析和介绍 ...

  7. 使用time.Time数据类型获取时间报错

    报错类型:Error 1292: Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1 在添加用户到数据库时, ...

  8. Kali Win-KeX Win

    内容: 概述 用法 开始 启动根会话 会话管理 声音支持 多屏支持 停止 概述 窗口模式下的 Win-KeX 将在单独的窗口中运行 Kali Linux 桌面会话. 窗口模式有助于在视觉上将 Wind ...

  9. CentOS7升级Linux内核

    CentOS7升级Linux内核 什么是Linux内核 虽然时候使用 Linux 来表示整个操作系统,严格地说,Linux 只是个内核,而发行版的操作系统是一个完整功能的系统,它建立在内核之上,具有各 ...

  10. Springboot启动时加载

    @Component public class SpringBootInitialization1 implements ServletContextListener { @Override publ ...