gpt4 book ai didi

python - 改进我的 python 函数解析 Wordpress/config.php 的建议

转载 作者:行者123 更新时间:2023-12-01 02:30:12 25 4
gpt4 key购买 nike

我正在编写一个Python脚本函数来备份Wordpress。作为脚本的一部分,我编写了一个函数来从 config.php 文件中获取数据库详细信息。

我的职能的运作

函数以Wordpress安装位置作为参数,并使用正则表达式从该文件中匹配db_user,db_host,db_user,db_password,如果找不到“config.php”,该函数将存在。 我使用 sys.exit(1) 退出函数是退出函数的正确方法吗?我正在粘贴我的函数代码片段。

def parsing_db_info(location):
config_path = os.path.normpath(location+'/config.php')
if os.path.exists(config_path):
try:
regex_db = r'define\(\s*?\'DB_NAME\'\s*?,\s*?\'(.*?)\'\s*?'.group(1)
regex_user = r'define\(\s*?\'DB_USER\'\s*?,\s*?\'(.*?)\'\s*?'.group(1)
regex_pass = r'define\(\s*?\'DB_PASSWORD\'\s*?,\s*?\'(.*?)\'\s*?'.group(1)
regex_host = r'define\(\s*?\'DB_HOST\'\s*?,\s*?\'(.*?)\'\s*?'.group(1)
db_name = re.match(regex_db,config_path).group(1)
db_user = re.match(regex_user,config_path).group(1)
db_pass = re.match(regex_pass,config_path).group(1)
db_host = re.match(regex_host,config_path).group(1)
return {'dbname':db_name , 'dbuser':db_user , 'dbpass':db_pass , 'dbhost':db_host}
except exception as ERROR:
print(ERROR)
sys.exit(1)
else:
print('Not Found:',config_path)
sys.exit(1)

编辑后

def parsing_db_info(location):
config_path = os.path.normpath(location+'/wp-config.php')
try:
with open(config_path) as fh:
content = fh.read()
regex_db = r'define\(\s*?\'DB_NAME\'\s*?,\s*?\'(.*?)\'\s*?'
regex_user = r'define\(\s*?\'DB_USER\'\s*?,\s*?\'(.*?)\'\s*?'
regex_pass = r'define\(\s*?\'DB_PASSWORD\'\s*?,\s*?\'(.*?)\'\s*?'
regex_host = r'define\(\s*?\'DB_HOST\'\s*?,\s*?\'(.*?)\'\s*?'
db_name = re.search(regex_db,content).group(1)
db_user = re.search(regex_user,content).group(1)
db_pass = re.search(regex_pass,content).group(1)
db_host = re.search(regex_host,content).group(1)
return {'dbname':db_name , 'dbuser':db_user , 'dbpass':db_pass , 'dbhost':db_host}

except FileNotFoundError:
print('File Not Found,',config_path)
sys.exit(1)

except PermissionError:
print('Unable To read Permission Denied,',config_path)
sys.exit(1)
except AttributeError:
print('Parsing Error wp-config seems to be corrupt,')
sys.exit(1)

最佳答案

要回答您的问题,您通常不应使用 sys.exit在这样的函数内部。相反,让它在失败的情况下引发异常。最好是,它应该是一个异常,详细说明出了什么问题,或者您可以让现有的异常传播。

Python 中的正常规则是这样的:在您知道如何处理异常的地方处理异常。

在你的代码中,你捕获了一个异常,然后不知道该怎么做,所以调用sys.exit 。相反,您应该:

  1. 让异常传播到可以捕获它的顶级函数,然后调用 sys.exit如果合适的话
  2. 将异常包装在更具体的内容中,然后重新引发,以便更高级别的函数将捕获特定的异常。例如,您的函数可能会引发自定义 ConfigFileNotFound异常或ConfigFileUnparseable异常(exception)。

此外,您还输入了 except exception ,你可能是说 except Exception 。然而,这是非常广泛的,并且会掩盖其他编程错误。相反,捕获您期望的特定异常类。

关于python - 改进我的 python 函数解析 Wordpress/config.php 的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46916113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com