【发布时间】:2023-12-06 20:07:01
【问题描述】:
我是 python 新手,很少使用类定义,我尝试运行我的程序但出现错误...有人知道会发生什么吗?还是我的代码有问题?我已经尝试了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'
【问题讨论】:
-
你没有实例化
QuickScan。filenames=get_all_abs_paths(...)行也是缩进的,这意味着它在类QuickScan的定义内。您必须在该类的实例上调用该函数,并在类定义之外执行此操作。 -
不要觉得你必须为了使用一个类而使用一个类。
-
我试图在另一个 python 文件中调用这个函数,所以我想我必须创建这个类
-
如果这是唯一的原因,就不需要上课。常规函数(与类/方法相比)就可以了。