Python | 关于转义字符‘\‘不得不说的事儿

(实在忍不住,这事儿必须说!!!)

在最近的UI自动化脚本中,涉及了一些运维操作就免不了对文件系统的操作。Python中'\'代表转义字符,而Windows的文件路径也是采用'\'分割,之前我们对路径的处理方式是:将采用 '/' 替代 '\',可是,毫无征兆,有那么一天,在一个美丽的傍晚,回车的时候就提示文件路径无效了!!!就这样猝不及防。。。

分析数据流向:

  • 保存数据:前端设置UI操作的相关参数(文件路径D:\temp.sql)--> Python处理(D:\\temp.sql) --> 保存DB (D:  emp.sql)
  • 显示数据:查询DB获取参数path(D:\temp.sql) --> Python处理(D:\\temp.sql)-->显示效果(D:\temp.sql)
  • 使用数据:查询DB获取参数path(D:\temp.sql) --> Python处理(D:\\temp.sql) --> pyautogui.write(path)输入到Windows文件窗口中(D:  emp.sql)

这是使用 \ 为分隔符时的数据流向效果,完全不是我期望的样子;

只有显示数据时,保存的效果与期望一致

......此处省略一万字,百度的解决方式......

直接给出解决方式:

1. 保存数据:

目的将前端输入的文件路径D:\temp.sql,保存到DB时也是D:\temp.sql,这样在前端回显时可以不用做任何处理。

通过Debug分析保存数据时的数据动态得出,保存到DB时执行SQL会先将\\恢复为\后,进行保存,而保存时会对文中的\t进行转义,导致出错。(也就是会进行两次转义)

所以,若需要保存为目标状态,则存入DB时必须是未转义前的样子

为了支持两次转义,在Python处理的过程中,将 '\\' 替换为 '\\\\' ,即可在保存DB后存储为目标格式

2. 显示数据:

从DB中查询出的数据,到显示层不会发生改变;所以,只要保存的格式正确,就无需担心显示

3. 使用数据:

从数据流向可以看出,使用数据时由于时调用write方法,文件路径还是以python字符串的方式进行处理,所以,与显示数据不同,使用数据也需要进行二次转义。

转义方法同保存数据的操作,不赘述

结论:

如果字符被按照转义字符处理了,则需要你来拯救它,使它支持两次转义即可

其实我更纳闷,Python的字符串转义是怎样的执行的??如果可以寻求到结果,我们调用python的转义函数岂不是更好、更完美

以上内容为个人的有限理解,不足之处恳请指出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值