的paramiko。按修改时间获取文件

时间:2012-02-15 12:42:17

标签: python sftp paramiko

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)类型的未知类型

3 个答案:

答案 0 :(得分:5)

试试这个:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

remote_path = '/tmp'

for f in sorted(ftp_client.listdir_attr(remote_path), key=lambda k: k.st_mtime, reverse=True):
    print(f.filename)

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