使用 lftp 提取文件并遍历提取的文件
Extract files with lftp and iterate over the extracted files
我正在使用 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
获取文件。
不一定——但您可以打开 lftp 的下载日志,它会跟踪所有下载的文件。然后解析该日志的文件名并在您的 python 脚本中使用它。
xfer:log (boolean) when true, lftp logs transfers to a file from xfer:log-file setting.
xfer:log-file (path to file) the file to log transfers to.
Default is ~/.local/share/lftp/transfer_log or ~/.lftp/transfer_log.
我假设您想这样做,因为查找可能会在之前获取的 cvs 文件中找到最后状态意外更改的文件。
我对 lftp 不太熟悉,但我可以想到一个解决方法:
让 lftp 将文件下载到临时位置,执行 python 操作,然后将修改后的文件移动到最终目的地。
或者提取下载的文件列表 lftp 的标准输出(管道通过 awk 和 grep,或任何最适合你的),用它填充一个变量,然后用它循环而不是 $(find *.csv -ctime -1).
我正在使用 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
获取文件。
不一定——但您可以打开 lftp 的下载日志,它会跟踪所有下载的文件。然后解析该日志的文件名并在您的 python 脚本中使用它。
xfer:log (boolean) when true, lftp logs transfers to a file from xfer:log-file setting.
xfer:log-file (path to file) the file to log transfers to. Default is ~/.local/share/lftp/transfer_log or ~/.lftp/transfer_log.
我假设您想这样做,因为查找可能会在之前获取的 cvs 文件中找到最后状态意外更改的文件。
我对 lftp 不太熟悉,但我可以想到一个解决方法: 让 lftp 将文件下载到临时位置,执行 python 操作,然后将修改后的文件移动到最终目的地。 或者提取下载的文件列表 lftp 的标准输出(管道通过 awk 和 grep,或任何最适合你的),用它填充一个变量,然后用它循环而不是 $(find *.csv -ctime -1).