python项目中使用了os.getcwd()和切片来获取根路径所遇到的问题

问题原因:在学习接口测试项目中,处理excel和json文件时候使用到了拼接路径,具体是以下这样用的:
我当前的文件绝对路径是这样的:D:/PythonWorkSpace/interfacetest/Util/handle_excel.py

base_path = os.getcwd()
sys.path.append(base_path)
print(base_path)
print(base_path[0:-4])

D:\PythonWorkSpace\interfacetest\Util
D:\PythonWorkSpace\interfacetest\

以上分别为2行输出。因为我的excel和json的文件路径是在 interfacetest下面的/config下面,所以我在第一个path输出后,我又切片将Util去掉,此后拼接+ 上/config/xx.json 代码是正常运行的。

如果不去掉:则会报想象之中的错误:即文件路径拼接错了:FileNotFoundError: [Errno 2] No such file or directory: 'D:\\PythonWorkSpace\\interfacetest\\Util\\Config\\xxxx

此时我在涉及到使用拼接路径的地方均用的切片后的路径。

在Jenkins的环境变量中,我项目的路径是D:\PythonWorkSpace\interfacetest\ ,一点问题都莫得

但是当我在Jenkins 构建时候,问题出现了:

此时我仔细检查路径,发现正常的interfacetest却变成interface了,所以导致路径错误。那么为什么会产生这样的问题呢,是由于在执行代码时候,因为我在D:\PythonWorkSpace\interfacetest\  执行的(Jenkins这么配的路径),所以通过os.getcwd()获取到的肯定也是D:\PythonWorkSpace\interfacetest,但是因为我【0:-4】的操作,从而导致变成了interface。 通过在cmd手动执行发现也是获取到的路径是D:\PythonWorkSpace\interfacetest。

于是开始解决问题,第一反应我肯定是改代码里的路径,但是如果在代码里不进行切片的话又会报这样的错:

因为我是想找interfacetest\Case。但是我代码文件是在Util包下的。因为没切片导致的。

其实代码最主要的是想要拼接成 要引用的文件的绝对路径,但是因为使用了os.getcwd()而且还切片,最终导致和工作路径冲突了。

最终我采用的是

base_path = os.path.dirname(os.getcwd())

,而且Jenkins配置的路径是项目里的下一层目录,这样就可以工作路径和代码路径保持同步。都正常运行

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值