使用 class 定义扫描计算机系统文件
Scan computer system file using class definition
我是 python 的新手,很少使用 class 定义,我尝试 运行 我的程序但出现错误...有人知道发生了什么事吗?或者我的代码有问题?我已经尝试了2天...
这是下面的编码:
import hashlib
import os.path
import os
class QuickScan:
def md5(self,fname):
hash_md5 = hashlib.md5()
try:
with open(fname, "rb") as f:
for chunk in iter(lambda: f.read(2 ** 20), b""):
hash_md5.update(chunk)
except Exception:
pass
return hash_md5.hexdigest()
def get_all_abs_paths(self,rootdir):
viruslist = open('C:/FYP/SecuCOM2022/virusshare.md5.txt','rt')
virusinside = [l.rstrip() for l in viruslist]
paths = list()
virus="detected"
novirus="clear"
for dirpath,_,filenames in os.walk(rootdir):
for f in filenames:
paths.append(os.path.abspath(os.path.join(dirpath, f)))
for filename in paths:
print(filename, self.md5(filename))
if self.md5(filename) in virusinside:
print(virus)
os.remove(filename)
else:
print(novirus)
filenames=get_all_abs_paths('C:/Users/User/Desktop/irustesting')
出现以下错误:-
class QuickScan:
File "c:\FYP\SecuCOM2022\QuickScanTab.py", line 71, in QuickScan
filenames=get_all_abs_paths('C:/Users/User/Desktop/irustesting')
TypeError: get_all_abs_paths() missing 1 required positional argument: 'rootdir'
get_all_abs_paths()
是 class QuickScan
的实例属性(方法)。您需要实例化 class QuickScan
的对象并调用其 get_all_abs_paths()
scan = QuickScan()
scan.get_all_abs_paths('C:/Users/User/Desktop/irustesting')
此外,请注意此方法没有明确的 return,因此它有 return None
以及您将 return 值绑定到名称 filenames
没有多大意义。
此外,您需要取消缩进一层,目前 filenames=get_all_abs_paths('C:/Users/User/Desktop/irustesting')
在 class.
内
我是 python 的新手,很少使用 class 定义,我尝试 运行 我的程序但出现错误...有人知道发生了什么事吗?或者我的代码有问题?我已经尝试了2天... 这是下面的编码:
import hashlib
import os.path
import os
class QuickScan:
def md5(self,fname):
hash_md5 = hashlib.md5()
try:
with open(fname, "rb") as f:
for chunk in iter(lambda: f.read(2 ** 20), b""):
hash_md5.update(chunk)
except Exception:
pass
return hash_md5.hexdigest()
def get_all_abs_paths(self,rootdir):
viruslist = open('C:/FYP/SecuCOM2022/virusshare.md5.txt','rt')
virusinside = [l.rstrip() for l in viruslist]
paths = list()
virus="detected"
novirus="clear"
for dirpath,_,filenames in os.walk(rootdir):
for f in filenames:
paths.append(os.path.abspath(os.path.join(dirpath, f)))
for filename in paths:
print(filename, self.md5(filename))
if self.md5(filename) in virusinside:
print(virus)
os.remove(filename)
else:
print(novirus)
filenames=get_all_abs_paths('C:/Users/User/Desktop/irustesting')
出现以下错误:-
class QuickScan:
File "c:\FYP\SecuCOM2022\QuickScanTab.py", line 71, in QuickScan
filenames=get_all_abs_paths('C:/Users/User/Desktop/irustesting')
TypeError: get_all_abs_paths() missing 1 required positional argument: 'rootdir'
get_all_abs_paths()
是 class QuickScan
的实例属性(方法)。您需要实例化 class QuickScan
的对象并调用其 get_all_abs_paths()
scan = QuickScan()
scan.get_all_abs_paths('C:/Users/User/Desktop/irustesting')
此外,请注意此方法没有明确的 return,因此它有 return None
以及您将 return 值绑定到名称 filenames
没有多大意义。
此外,您需要取消缩进一层,目前 filenames=get_all_abs_paths('C:/Users/User/Desktop/irustesting')
在 class.