python shutil根据条件将文件从源目录复制到远程目录

时间:2019-01-09 06:15:16

标签: python-3.x python-datetime shutil

我正在使用shutil()将文件从源目录复制到远程目录,但是我需要进行如下检查。

  1. 请勿将零字节文件复制到远程计算机。

  2. 如果文件已经在遥控器上退出,那么除非源文件已更改内容或更新,否则不要再次复制它。

  3. 我正在查找当前月份的目录,因此,如果该目录在当前月份可用,则遍历该目录,就像本月应该是一月一样。

导入模块:

import os
import glob
import shutil
import datetime

可以选择当前月份:

Info_month = datetime.datetime.now().strftime("%B")

代码段:

for filename in glob.glob("/data/Info_month/*/*.txt"):
    if not os.path.exists("/remote/data/" + os.path.basename(filename)):
        shutil.copy(filename, "/remote/data/")

以上代码未使用变量Info_month,但是,对目录名称进行硬编码是可行的。

由于缺乏Python知识,我面临挑战。

如何在源目录路径中包含变量Info_month

如何检查不复制零字节文件?

os.path.getsize(fullpathhere) > 0

我最基本的愚蠢逻辑:

for filename in glob.glob("/data/Info_month/*/*.txt"):
    if os.path.getsize(fullpathhere) > 0 :
        if not os.path.exists("/remote/data/" + os.path.basename(filename)):
            shutil.copy(filename, "/remote/data/")
    else:
        pass

1 个答案:

答案 0 :(得分:1)

这是您现有脚本的修复。由于您没有具体询问,因此这还没有尝试实现“源于目标”的逻辑,而且这可能已经太广泛了。

for filename in glob.glob("/data/{0}/*/*.txt".format(Info_month)):
    # The result of the above glob _is_ a full path
    if os.path.getsize(filename) > 0:
        # Minor tweak: use os.path.join for portability
        if not os.path.exists(os.path.join(["/remote/data/", os.path.basename(filename)])):
            shutil.copy(filename, "/remote/data/")
    # no need for an explicit "else" if it's a no-op