我找到了一些 ClamAV 的示例代码。它工作正常,但它只扫描单个文件。这是代码:
import pyclamav
import os
tmpfile = '/home/user/test.txt'
f = open(tmpfile, 'rb')
infected, name = pyclamav.scanfile(tmpfile)
if infected:
print "File infected with %s Deleting file." %name
os.unlink(file)
else:
print "File is clean!"
我正在尝试扫描整个目录,这是我的尝试:
import pyclamav
import os
directory = '/home/user/'
for filename in os.listdir(directory):
f = open(filename, 'rb')
infected, name = pyclamav.scanfile(filename)
if infected:
print "File infected with %s ... Deleting file." %name
os.unlink(filename)
else:
print " %s is clean!" %filename
但是,我收到以下错误:
Traceback (most recent call last):
File "anti.py", line 7, in <module>
f = open(filename, 'rb')
IOError: [Errno 21] Is a directory: 'Public'
我对 Python 还是很陌生,我已经阅读了几个类似的问题,我认为他们做的事情和我做的一样。
以下代码将逐个文件遍历所有目录文件。你的错误发生是因为你试图打开一个目录,就好像它是一个文件,而不是输入目录并打开里面的文件
for subdir, dirs, files in os.walk(path): # walks through whole directory
for file in files:
filepath = os.path.join(subdir, file) # path to the file
#your code here
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句