0

我正在使用lftp以下命令从 FTP 服务器中提取一些 CSV 数据文件:

lftp -e 'set ftp:use-mdtm false; set ftp:timezone Europe/Berlin; mirror --newer-than=now-1days --no-recursion --verbose -i "INERGIA.*\.csv" / /mnt/trailstone/itpf/DataInput; bye' -u [USERNAME],[PASSWORD] [SERVER-NAME]

这完美运行。但是,在提取 CSV 文件后,我想遍历它们中的每一个,以便使用 Python 脚本修改文件中的一些数据。有没有办法通过lftp例如将提取的文件分配给变量来直接获取提取的文件?

此时我只需执行以下操作:

cd "/mnt/trailstone/itpf/DataInput/"

for f in $(find *.csv -ctime -1) do 
   python /mnt/trailstone/itpf/OnlineDataProcessing/OnlineExtraDataDownloader/changeDelimiter.py $f
done 

但我更愿意直接通过lftp.

4

2 回答 2

1

我假设您想要这样做,因为 find 可能会在先前获取的 cvs 文件中意外更改最后状态的文件。

我对 lftp 不太熟悉,但我可以想到一个解决方法:让 lftp 将文件下载到临时位置,执行 python 操作,然后将修改后的文件移动到最终目的地。或者,提取下载的文件列表 lftp 的标准输出(通过管道通过 awk 和 grep,或任何最适合您的方式),用它填充一个变量,然后用它而不是 $(find *.csv -ctime -1) 循环。

于 2016-05-10T08:46:26.753 回答
1

不是真的——但你可以打开 lftp 的下载日志,它会跟踪所有下载的文件。然后解析该日志以获取文件名并在您的 python 脚本中使用它。

xfer:log (boolean) 当为真时,lftp 日志从 xfer:log-file 设置传输到文件。

xfer:log-file (path to file) 日志传输到的文件。默认为 ~/.local/share/lftp/transfer_log 或 ~/.lftp/transfer_log。

于 2016-05-10T08:38:13.550 回答