我正在使用shutil()
将文件从源目录复制到远程目录,但是我需要进行如下检查。
请勿将零字节文件复制到远程计算机。
如果文件已经在遥控器上退出,那么除非源文件已更改内容或更新,否则不要再次复制它。
我正在查找当前月份的目录,因此,如果该目录在当前月份可用,则遍历该目录,就像本月应该是一月一样。
导入模块:
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
答案 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