我有一个脚本可以清除确定路径中的日志。
此脚本可在一台虚拟机中运行,但是当我导出到另一台虚拟机时,此脚本不起作用。 python的版本相同:
[ec2-user@host1 h]$ python3 --version
Python 3.5.1
错误:
Traceback (most recent call last):
File "jenk.py", line 54, in <module>
dicta = dict(path)
File "jenk.py", line 51, in dict
dicto[elem] = { (dirs['Subdir'][elem]['Path']) : (dirs['Subdir'][elem]['Num_Subdir']) }
KeyError: 'Path'
这是代码:
def PathToDict(path):
st = os.lstat(path)
result = {}
if S_ISDIR(st.st_mode):
result['Path'] = path
result['Subdir'] = {
name: PathToDict(path+'/'+name)
for name in os.listdir(path)}
result['Num_Subdir'] = int(len([i for i, j, k in os.walk(path)]))
# result['RealSize'] = subprocess.check_output(['du','-sh', path]).split()[0].decode('utf-8')
else:
result['type'] = 'file'
return result
dirs = PathToDict(path)
#Getting new dict with clean info with name of dir and number of dirs
def dict(path):
dicto = {}
for elem in dirs['Subdir']:
dicto[elem] = { (dirs['Subdir'][elem]['Path']) : (dirs['Subdir'][elem]['Num_Subdir']) }
return dicto
有什么主意吗?可能是模块问题吗?
答案 0 :(得分:0)
elem中没有“路径”。
尝试调试
print(dirs['Subdir'][elem])
或使用
dirs['Subdir'][elem].get('Path')
答案 1 :(得分:0)
可能使东西依赖的一件事是您在其中手动连接文件路径
name: PathToDict(path+'/'+name)
但是,“ /”可能并非在所有设备上都有效。相反,最好在python中使用os.path模块来连接路径。这将自动选择正确的分隔符。
name: PathToDict(os.path.join(path,name))
这至少会使代码平台的这一部分独立。
另外,通过os.path.normpath传递您的输入将确保将输入正确解析为平台上可读的内容。