Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本必须从最近修改的目录中进行备份,但无法读取mtime_Python_Filemtime - Fatal编程技术网

Python脚本必须从最近修改的目录中进行备份,但无法读取mtime

Python脚本必须从最近修改的目录中进行备份,但无法读取mtime,python,filemtime,Python,Filemtime,我编写了下面的脚本,它检查指定的路径PARENT\u DIR,找到最近修改的目录(+子目录),然后将它们备份到MOVE\u DIR 我正在努力解决的问题是,这个脚本似乎不知何故没有检查目录的mtime,而是将父目录中的全部内容复制到目标地址。我做错了什么 import os import os.path import datetime from shutil import copytree from shutil import move from time import time os.chdi

我编写了下面的脚本,它检查指定的路径
PARENT\u DIR
,找到最近修改的目录(+子目录),然后将它们备份到
MOVE\u DIR

我正在努力解决的问题是,这个脚本似乎不知何故没有检查目录的mtime,而是将父目录中的全部内容复制到目标地址。我做错了什么

import os
import os.path
import datetime
from shutil import copytree
from shutil import move
from time import time
os.chdir("/home/sina/Desktop/incoming")

def mins_since_mod(fname):
    """Return time from last modification in minutes"""
    return (time() - os.path.getmtime(fname)) / 60
PARENT_DIR = '/home/sina/Desktop/incoming'
MOVE_DIR = '/home/sina/Desktop/incoming_New'

# Loop over files in PARENT_DIR
for fname in os.listdir(PARENT_DIR):
    # If the file is a directory and was modified in last 10 days
        if ((os.path.isdir(fname)) and (mins_since_mod(fname) < 14400)):
           copytree(fname, MOVE_DIR) # move it to a new location
./A
中的子目录,如
A2.2
A1.1
正在被另一个应用程序修改(这个应用程序甚至可能会添加新的子目录),我希望每隔10天在这个路径上备份一次
/home/sina/Desktop/incoming_new/A/{subdirectories}


非常感谢您的帮助。

使用
crontab
每10天运行一次备份命令?time()和getmtime(fname)的返回值是多少?您是否确定通过ls命令获得的目录修改记录时间是您所期望的?您的测试过程中的某些内容可能无意中修改了目录好吧,我更希望使用python脚本来完成,因为这一步只是一个更大项目的一部分,该项目将填充备份目录以提供另一个python应用程序。@LorenzoGatti,time()是当前机器时间和getmtime(fname)将获得fname的最后修改时间(在本例中是一个目录),您可以在Linux中更改文件时使用ls-la检查该时间(或者如果在python shell上运行该行,将看到特定文件或文件夹的结果),然后也会更改目录mtime,因为目录类似于包含此目录中文件的mtime信息的文件。使用
crontab
每10天运行一次备份命令?time()和getmtime(fname)的返回值是什么?您是否确定通过ls命令获得的目录修改记录时间是您所期望的?您的测试过程中的某些内容可能无意中修改了目录好吧,我更希望使用python脚本来完成,因为这一步只是一个更大项目的一部分,该项目将填充备份目录以提供另一个python应用程序。@LorenzoGatti,time()是当前机器时间和getmtime(fname)将获得fname的最后修改时间(在本例中是一个目录),您可以在Linux中更改文件时使用ls-la检查该时间(或者如果在python shell上运行该行,将看到特定文件或文件夹的结果),然后也会更改目录mtime,因为目录类似于一个文件,其中包含有关此目录中文件的mtime的信息。
 /home/sina/Desktop/incoming/A/A1.1
 /home/sina/Desktop/incoming/A/A2.2
 ...