def check_Configuration_Information(): global mysql_config Dictionary = { "innobackupex_dir" : {mysql_config["innobackupex_dir"]}, "defaults-file" : {mysql_config["defaults-file"]}, "tmpdir" : {mysql_config["tmpdir"]}, } for key,path in Dictionary.items(): if check_path_or_file_exists(path) == 1: print(f"错误在 {key} 参数") sys.exit(1) [root@test-01 test]# /usr/local/bin/python3 /root/test/4.py Traceback (most recent call last): File "/root/test/4.py", line 332, in <module> check_Configuration_Information() File "/root/test/4.py", line 326, in check_Configuration_Information if check_path_or_file_exists(path) == 1: File "/root/test/4.py", line 309, in check_path_or_file_exists if os.path.exists(path): File "/usr/local/python3/lib/python3.7/genericpath.py", line 19, in exists os.stat(path) TypeError: stat: path should be string, bytes, os.PathLike or integer, not set
时间: 2024-04-14 17:30:18 浏览: 141
在你的代码中,出现了一个错误。在字典`Dictionary`的值的定义中,你使用了花括号`{}`将`mysql_config`的值包裹起来,导致`Dictionary`中的值成为了集合(set)而不是字符串。
修复这个问题很简单,只需将字典`Dictionary`中的值从花括号改为直接引用`mysql_config`的值即可。以下是修改后的代码:
```python
import sys
import os
def check_Configuration_Information():
global mysql_config
Dictionary = {
"innobackupex_dir": mysql_config["innobackupex_dir"],
"defaults-file": mysql_config["defaults-file"],
"tmpdir": mysql_config["tmpdir"],
}
for key, path in Dictionary.items():
if not check_path_or_file_exists(path):
print(f"错误在 {key} 参数")
sys.exit(1)
def check_path_or_file_exists(path):
if os.path.exists(path):
print(f"The path or file '{path}' exists.")
return True
else:
print(f"The path or file '{path}' does not exist.")
return False
# 测试函数
mysql_config = {
"innobackupex_dir": "/path/to/innobackupex",
"defaults-file": "/path/to/defaults-file",
"tmpdir": "/path/to/tmpdir"
}
check_Configuration_Information()
```
在这个修正后的代码中,我将`Dictionary`中的值从花括号改为直接引用`mysql_config`的值。这样,字典`Dictionary`中的值就是字符串,可以正确地传递给`check_path_or_file_exists`函数进行路径检查。
希望这次修改能解决问题!如果还有其他问题,请随时提问。
阅读全文