Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅移动文件内容,不移动任何文件处理程序/指针_Python_Logging_Cron_File Handling_Concurrentmodification - Fatal编程技术网

Python 仅移动文件内容,不移动任何文件处理程序/指针

Python 仅移动文件内容,不移动任何文件处理程序/指针,python,logging,cron,file-handling,concurrentmodification,Python,Logging,Cron,File Handling,Concurrentmodification,我正在频繁地分析日志文件的数据,并进行相应的处理。作为输入的日志文件是一个无限增长的文件。长时间运行的进程向其写入数据,并且它属于根用户 我拥有日志文件的所有文件权限。我想做的是只移动文件内容直到该点(获取文件内容并清除文件),而不干扰另一个进程。最好是通过python脚本 [编辑] (即),我需要剪切并粘贴日志文件(主)中的所有内容,直到该时间点,然后将它们放入另一个(辅助)日志文件中。我将使用此辅助日志文件进行数据分析。同时,如果长时间运行的进程将任何内容写入主日志文件,那么它不应该丢失。如

我正在频繁地分析日志文件的数据,并进行相应的处理。作为输入的日志文件是一个无限增长的文件。长时间运行的进程向其写入数据,并且它属于根用户

我拥有日志文件的所有文件权限。我想做的是只移动文件内容直到该点(获取文件内容并清除文件),而不干扰另一个进程。最好是通过python脚本

[编辑] (即),我需要剪切并粘贴日志文件(主)中的所有内容,直到该时间点,然后将它们放入另一个(辅助)日志文件中。我将使用此辅助日志文件进行数据分析。同时,如果长时间运行的进程将任何内容写入主日志文件,那么它不应该丢失。如果我将新数据与其他内容一起带到辅助日志文件中,这将不会是一个问题

[编辑2] 我面临的主要问题是,一旦从主日志文件中获取文件内容,就要清除这些内容。我需要确保在读取主日志并将其写入辅助日志并从文件中删除这些内容时,写入文件的任何日志不会丢失

我研究了TimedRotatingFileHandler,但它在这方面对我没有帮助。还有其他建议吗


谢谢

linux跟踪文件的方法很简单。 日志记录过程一开始,就在日志文件上使用此命令:

  tail -f log_file_name.log >> /tmp/new_file_name.log &


[EDIT] tail -f log_file_name.log >> /tmp/new_file_name.log | tail -f /tmp/new_file_name.log | xargs -I TailOutput echo sed -i '/TailOutput/d' log_file_name.log
然后,您可以使用这个新文件\u name.log来处理这个新文件。您的原始日志文件也完好无损。
我知道这有点扭曲,但这就是我现在的想法

你能更清楚地解释第二段吗?我做了一个更新来更好地解释:-)还有更多的澄清吗?你为什么不把一个日志文件的输出传输到另一个日志文件呢。这是一个简单的linux命令。然后使用第二个日志文件进行进一步处理。您的意思是获取日志文件的内容吗?在这种情况下,我必须清除从主文件中获取的内容,以便它们将来不会用于数据分析。可以用shell脚本完成吗?但这并不能清除主日志文件中的数据。这更像是使用“'cat log\u file\u name.log>/tmp/new\u file\u name.log”“”。我需要类似于“cat log\u file\u name.log>/tmp/new\u file\u name.log&&cat/dev/null>log\u file\u name.log”的东西,除了在第一个cat命令之后写入的日志不会丢失之外。即使它看起来扭曲了,但对我来说是有效的:-)这才是最重要的:-)