Python 使用lftp提取文件并迭代提取的文件

Python 使用lftp提取文件并迭代提取的文件,python,linux,bash,scripting,lftp,Python,Linux,Bash,Scripting,Lftp,我使用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] [SER

我使用
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(布尔值)如果为true,lftp日志将从xfer:log文件设置传输到文件

xfer:log file(文件路径)要将日志传输到的文件。 默认值为~/.local/share/lftp/transfer\u log或~/.lftp/transfer\u log

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

xfer:log(布尔值)如果为true,lftp日志将从xfer:log文件设置传输到文件

xfer:log file(文件路径)要将日志传输到的文件。 默认值为~/.local/share/lftp/transfer\u log或~/.lftp/transfer\u log


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

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

我想您之所以要这样做,是因为find可能正在访问以前获取的cvs文件中最后一个状态意外更改的文件

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

是的,正是这种情况。我喜欢这种变通方法,因为这将确保我不会无意中将脚本应用于其他数据文件。非常感谢!是的,就是这样。我喜欢这种变通方法,因为这将确保我不会无意中将脚本应用于其他数据文件。非常感谢!好的,也许lftp的输出方式不可用,但另一个on可以工作。好的,也许lftp的输出方式不可用,但另一个on可以工作。