我想监视应用程序正在写入的日志文件.我希望逐行处理文件,或者在写入之后不久.我没有找到一种方法来检测文件在到达eof后已被扩展.
代码需要在Mac和PC上运行,并且可以使用任何语言,尽管我最熟悉C++和Perl.
有没有人建议最好的方法呢?
我喜欢watchr的概念:它监视文件系统并在发生变化时运行回调.是否有纯Python等效?优选地,可安装pip.
在Windows 7 64位机器上使用python 2.7.
如何获取文件关闭事件:
那么,如何在上述情况下获取文件关闭事件?是否可以通过公共代码实现上述情况?我正在处理不同的文件类型
问题:如何使用Python查看文件以进行更改?建议使用看门狗,但我发现它只能观看目录,而不是文件.watchdog-test.py是看门狗的示例脚本:
$ python watchdog-test.py ab_test_res.sh &
[1] 30628
fbt@fbt64:~/laike9m$ Traceback (most recent call last):
File "watchdog-test.py", line 15, in <module>
observer.start()
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/api.py", line 255, in start
emitter.start()
File "/usr/local/lib/python2.7/dist-packages/watchdog/utils/__init__.py", line 111, in start
self.on_thread_start()
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify.py", line 121, in on_thread_start
self._inotify = InotifyBuffer(path, self.watch.is_recursive)
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_buffer.py", line 35, in __init__
self._inotify = Inotify(path, recursive)
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_c.py", line 187, in __init__
self._add_dir_watch(path, recursive, event_mask)
File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_c.py", line 363, in _add_dir_watch
raise OSError('Path is not a directory') …Run Code Online (Sandbox Code Playgroud) 我是python的新手,但是我试图创建一个自动化过程,其中我的代码将侦听目录中的新文件条目。例如,某人可以手动将zip文件复制到一个特定的文件夹中,并且我希望我的代码能够在文件完全复制到该文件夹后识别出该文件。然后,代码可以进行一些操作,但这无关紧要。目前,我的代码仅每5秒检查一次新文件,但这对我来说似乎效率很低。有人可以提出一些更异步的建议吗?
我需要设置一个脚本来监视某个类型的文件的文件夹.我做了这个代码,但我想知道是否有更好的方法?
import os
def listAppleseedFiles(directory_path):
directory_entities = os.listdir(directory_path)
files = []
appleseed_files = []
for entity in directory_entities:
file_path = os.path.join(directory_path, entity)
if os.path.isfile(file_path):
if os.path.splitext(file_path)[1] == '.appleseed':
appleseed_files.append(file_path)
return appleseed_files
while True:
for file in listAppleseedFiles('/dir_name'):
doSomething()
Run Code Online (Sandbox Code Playgroud) 我希望能够在给定目录树(或树集)中创建新文件或修改或删除现有文件时进行检测.执行此操作的蛮力方法是重新扫描树以查找更改,但我正在寻找更"中断驱动"的解决方案,其中文件系统告诉我的代码在更改时发生了哪些更改,而不是我的代码必须通过不断扫描数千个寻找变化的文件来"轮询".
在Python中执行此操作的方法是首选,但如果我必须在C中编写本机模块,那么这是最后的手段.
我正在尝试查看目录中.py文件的更改。我经历了现有的解决方案。我对django库如何解决此问题感到好奇。文件更改后,开发服务器将重新启动。
我有一个名为的目录input_files.我希望每次将新xls文件放入其中时都会触发脚本.发生这种情况时,我将如何触发Python脚本?
我从另一个 StackOverflow 答案中借用了这段代码:
from PyQt4 import QtCore
@QtCore.pyqtSlot(str)
def directory_changed(path):
print('Directory Changed!!!')
@QtCore.pyqtSlot(str)
def file_changed(path):
print('File Changed!!!')
fs_watcher = QtCore.QFileSystemWatcher(['/path/to/files_1', '/path/to/files_2', '/path/to/files_3'])
fs_watcher.connect(fs_watcher, QtCore.SIGNAL('directoryChanged(QString)'), directory_changed)
fs_watcher.connect(fs_watcher, QtCore.SIGNAL('fileChanged(QString)'), file_changed)
Run Code Online (Sandbox Code Playgroud)
问题是,file_changed无论如何都不会被调用。directory_changed例如,在添加文件时可靠地调用,但更改文件内容不会导致调用 file_changed。
我调用了 的一些变体QtCore.SIGNAL('fileChanged(QString)'),例如,QtCore.SIGNAL('fileChanged(const QString &)')无济于事。没有警告或错误——它只是不触发该功能。
推荐?