我想檢查是否有更快的方式從物理計算機上的文件夾中不存在的SFTP下載數據。問題是這些文件是間隔5分鐘的快照,而當前的SFTP文件夾有數千個文件夾(從2016年8月起每5分鐘一次)。加速從SFTP下載文件的代碼
我打算問客戶他們是否可以清理SFTP並且有一個刪除舊數據的過程,但是同時我還想改進我的代碼以便下載。
本質上,我檢查SFTP上的每個文件夾,然後檢查我的計算機上的相應文件夾。如果該文件不存在,那麼我下載它(我現在正在使用Windows 10)。即使列出所有文件並檢查它們是否存在也需要很長時間(1400秒僅用於其中一個文件夾,這意味着我無法嘗試每隔5分鐘運行一次)。
with pysftp.Connection(host, username, password, port, cnopts) as sftp:
logger.info('Server connected')
for folder in folders:
sftp.chdir(folder)
logger.info('Downloading data from the {} folder'.format(folder))
for file in sftp.listdir():
if file not in os.listdir(os.path.join(path, folder.lower())) and sftp.isfile(file):
logger.info('Downloading: {}'.format(file))
os.chdir(os.path.join(path, folder.lower()))
sftp.get(file, preserve_mtime=True)
下面是文件夾之一確切的文件名的結構:
文件名-2016-12-06-08-55-05到09-00-17.csv
這一個文件夾(7個文件夾中)有30,000個文件(只有129MB的數據)
是否存在一致的文件夾結構/命名約定?而不是看你可以認爲它在那裏,並嘗試根據存儲格式/命名約定進行下載。 –
文件夾結構是靜態的,但命名不完全。文件的名稱是filename-2016-12-07-20-15-04-to-2016-12-07-20-20-09。它看起來像秒是可變的。那麼,我會更仔細地看,也許我可以使用glob和通配符來替換秒 – trench
你能提供一個在你的問題結構/命名約定的例子嗎?它可以幫助某人提供更好的答案。啊,是的,時間很難。 –