使用Python实现不同目录下文件的拷贝
目标:要实现将一台计算机的共享文件夹中的文件备份到另一台计算机,如果存在同名的文件只要文件的大小和最后修改时间一致,则不拷贝该文件
python版本:Python3.7.1
python脚本:
from datetime import date,datetime
import os
import shutil
import json source_path = os.path.abspath(r'D:\Video\540409938')
target_path = os.path.abspath(r'D:\Video\540409939')
jsonfilepath = os.path.abspath(target_path + r"\log.json") def load():
flag = os.path.exists(jsonfilepath)
if flag:
with open(jsonfilepath, 'r', encoding='utf-8') as f:
data = json.load(f)
if data == None:
data = []
return data
else:
with open(jsonfilepath, 'a', encoding='utf-8') as f:
return [] def store(data):
with open(jsonfilepath, 'w') as fw:
json.dump(data,fw) def makedir(dir):
if not os.path.exists(dir):
os.makedirs(dir) if __name__ == '__main__':
makedir(target_path)
logdata = load() if os.path.exists(source_path):
# root 所指的是当前正在遍历的这个文件夹的本身的地址
# dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)
# files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录)
for root, dirs, files in os.walk(source_path):
for file in files:
src_file = os.path.join(root, file)
fsize = os.path.getsize(src_file)
fmtime = os.path.getmtime(src_file)
log={'file':src_file,'fsize':fsize,'fmtime':fmtime} iscopy=0
for item in logdata:
# 判断文件是否拷贝过
if (item["file"] == src_file and item["fsize"] == fsize and item["fmtime"] == fmtime):
iscopy=1
break if iscopy==0:
# 未拷贝过则拷贝到当天文件夹下
target = target_path + "\\" + date.today().strftime("%Y%m%d")
makedir(target)
logdata.append(log)
shutil.copy(src_file, target) store(logdata)
print('copy files finished!')
使用Python实现不同目录下文件的拷贝的更多相关文章
- python生成器 获取 目录下文件
# os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取 # 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可 ...
- python实现指定目录下批量文件的单词计数:并发版本
在 文章 <python实现指定目录下批量文件的单词计数:串行版本>中, 总体思路是: A. 一次性获取指定目录下的所有符合条件的文件 -> B. 一次性获取所有文件的所有文件行 - ...
- python引入同一目录下的py文件
python引入同一目录下的py文件 注意:python2和python3的包内import语法有区别,下面介绍一下python3的包内import语法 例如在admin.py文件中要引入dealco ...
- python复制多层目录下的文件至其他盘符对应的目录中
一.需求 app打包需要打入一些H5进去,以便更快的加载页面.这些H5文件是散落在各个文件夹中的[如下列所示],偶尔各个文件夹还需新增文件,每次新增一个文件,需要改动jenkins上job脚本,比较麻 ...
- python获取指定目录下所有文件名os.walk和os.listdir
python获取指定目录下所有文件名os.walk和os.listdir 觉得有用的话,欢迎一起讨论相互学习~Follow Me os.walk 返回指定路径下所有文件和子文件夹中所有文件列表 其中文 ...
- Python获取指定目录下所有子目录、所有文件名
需求 给出制定目录,通过Python获取指定目录下的所有子目录,所有(子目录下)文件名: 实现 import os def file_name(file_dir): for root, dirs, f ...
- linux 目录下文件批量植入和删除,按日期打包
linux目录下文件批量植入 [root@greymouster http2]# find /usr/local/http2/htdocs/ -type f|xargs sed -i " ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- php遍历目录下文件,并读取内容
<?php echo "<h2>遍历目录下文件,并读取内容</h2><br>\n"; function listDir($dir) { i ...
随机推荐
- Servlet - HTTP协议相关
1. 术语 : 请求 : 客户端根据用户所给的地址信息将数据发送给服务器的过程 响应 : 服务器将请求的处理结果发送给浏览器的过程 2. HTTP协议 : 超文本传输协议 ( Hyper Text T ...
- JavaScript做个时间表 Date()
<span id="shiji"></span><script> window.setInterval("time()",5 ...
- JZOJ5146:港湾
Description 放假啦!小林和康娜来到了港口,看到有货船正在卸货.港口十分狭窄,只有两个卸货区可以使用.每个卸货区上面可以堆积任意多个箱子.每卸下来一个箱子,工作人员都会把这个箱子放在某个卸货 ...
- 取对数求阶乘位数——lightoj1045
/* 求 n! 在base进制下的位数 取对数,用换底公式,预处理对数前缀和 b^x = n! x = log_b(n!) = log_10(n!)/log_10(b) 对x向上取整即可 */ #in ...
- js函数中的apply()、call()、bind()方法
ECMAScript中的函数是对象,因此函数也有属性和方法.每个函数都包含两个属性:length和prototype,且每个函数包含两个非继承而来的方法apply()和call().这两个方法的用途都 ...
- [JZOJ 5860] 荒诞
思路: 头皮发麻的操作... 理解一下题意会发现:排名为\(i\)的前缀正好是第\(i\)个前缀. 所以问题就变成了求\(1->len\)的平方和,注意取模即可. #include <bi ...
- Shader实现新手指引挖空圆形和矩形
这个是参考这个做的:https://blog.csdn.net/tracyzly/article/details/80279692 Shader "UI/ImageWithHole" ...
- Python module中的全局变量
Python module中的全局变量 我想要实现一个python module,这个module中有一些配置项,这些配置项可以被读取,被修改.一个可行的方案是把这些配置项写到一个叫settings. ...
- Tomcat下载部署及解决中文乱码显示
一.下载 tomcat下载链接:https://tomcat.apache.org/ 1.进入tomcat官网后,我使用的是tomcat9,所以我选择tomcat9.然后点击core下的zip包下载. ...
- kubeadm 安装k8s
环境要求: 机器名 ip地址 cpu和内存要求 kubernetes-master 10.0.0.11 2c2g(关闭swap) kubernetes-node1 10.0.0.12 2c2g(关闭s ...