【问题标题】:Paramiko. Get Files by modified time帕拉米科。按修改时间获取文件
【发布时间】:2012-02-15 12:42:17
【问题描述】:
localpath = 'U:\\'
utime = sftp.stat("/TestBTEC/").st_mtime
last_modified = datetime.fromtimestamp(utime)
if (datetime.now()-last_modified)<=timedelta(hours=24):
 sftp.get(last_modified, localpath)

我收到以下异常错误: 例外:datetime.datetime(2012, 2, 15, 9, 4, 58) 类型的未知类型

【问题讨论】:

    标签: python sftp paramiko


    【解决方案1】:

    试试这个:

    from datetime import datetime, timedelta
    import stat
    import paramiko
    
    ssh = paramiko.SSHClient()
    ...
    ssh.connect(host, **params)
    ...
    sftp = ssh.open_sftp()
    ...
    utime = sftp.stat(PATH_TO_REMOTE_FILE).st_mtime
    last_modified = datetime.fromtimestamp(utime)
    if (datetime.now()-last_modified)<=timedelta(hours=24):
       do something with your file
    

    【讨论】:

    • 我会尝试应用这个。如果多个文件已被修改,则需要弄清楚如何获取多个文件
    • 例外:datetime.datetime(2012, 2, 15, 9, 4, 58) 类型的未知类型 我相信 YearMonthDayHourMinute 是标准
    【解决方案2】:

    pandas 的帮助下,您可以拥有这个非常漂亮的单线。

    import pandas as pd
    import paramiko
    # your sftp config here
    sftp = paramiko.SFTPClient.from_transport(transport)
    files = pd.DataFrame([attr.__dict__ for attr in sftp.listdir_attr()]).sort_values("st_mtime", ascending=False)
    files
    
        _flags  attr    filename    longname    st_atime    st_gid  st_mode st_mtime    st_size st_uid
    2   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    -rw-r--r-- 1 24212 1004 76648 Apr...    1556659214  1004    33188   1556612771  76648   24212
    6   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    -rw-r--r-- 1 24212 1004 72714 Apr...    1556535159  1004    33188   1556527667  72714   24212
    3   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    -rw-r--r-- 1 24212 1004 64897 Apr...    1556540969  1004    33188   1556288975  64897   24212
    4   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    -rw-r--r-- 1 24212 1004 59714 Apr...    1556540969  1004    33188   1556110171  59714   24212
    1   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    -rw-r--r-- 1 24212 1004 53655 Apr...    1556540969  1004    33188   1556005897  53655   24212
    0   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    -rw-r--r-- 1 24212 1004 45426 Apr...    1556540969  1004    33188   1555600649  45426   24212
    5   15  {}  test.txt    -rw-r--r-- 1 24212 1004 0 Apr...    1556540969  1004    33188   1555588091  0   24212
    

    【讨论】:

    • 这太棒了!!
    【解决方案3】:
    remote_path = '/tmp'
    
    for f in sorted(ftp_client.listdir_attr(remote_path), key=lambda k: k.st_mtime, reverse=True):
        print(f.filename)
    

    这将打印以最新修改文件开头的文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2012-05-27
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多