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配置的路径是项目里的下一层目录,这样就可以工作路径和代码路径保持同步。都正常运行

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: os.getcwd()是Python的一个函数,用于获取当前工作目录的路径。它返回一个字符串,表示当前工作目录的路径。在Pythonos模块提供了许多与操作系统相关的功能,包括文件和目录操作、进程管理、环境变量等。os.getcwd()函数是其一个常用的函数,可以帮助我们获取当前工作目录的路径,方便我们进行文件和目录操作。 ### 回答2: os.getcwd()是python的一个方法,可以用于获取当前工作目录的路径。它的返回值是一个字符串,对于windows操作系统,返回的是一个路径字符串,例如"C:\Users\admin\Desktop";在Linux或者Unix操作系统,返回的是一个绝对路径,例如"/usr/local/bin"。 在pythonos模块提供了一系列处理文件和目录的方法,因此os.getcwd()函数可以用于获取当前工作目录路径,并进一步用于以下操作: 1. 可以进行当前工作目录下文件生成和修改操作; 2. 可以进行路径拼接和路径解析操作; 3. 可以更改文件和目录权限、删除文件和目录、查找文件和目录等操作。 此外,在开发过程使用os.getcwd()函数获取当前工作目录路径,可以帮助我们明确程序所运行的实际路径,防止程序读取文件时出现路径错误。 在使用os.getcwd()函数时,需要注意以下事项: 1. 在windows系统路径分隔符为"\",但是在Linux和Unix系统路径分隔符为"/"; 2. 当前工作目录是随着终端的改变而改变的,因此在多个终端使用该函数可能会获取到不同的路径; 3. 如果在程序运行过程更改了工作目录,os.getcwd()获取到的路径可能会和实际文件路径不符。 综上所述,os.getcwd()函数可以帮助我们及时获取到当前工作目录的路径,是python常用的方法之一。 ### 回答3: os模块是Python提供的一个核心模块,其的getcwd()函数是os模块常用的函数之一。它的主要作用是获取当前工作目录。 所谓工作目录,即我们在进行文件操作时,默认操作的当前路径。例如,我们在Python打开一个文件,如果不指定具体的路径,那么系统就会默认在当前工作目录下寻找该文件。因此,当我们需要获取当前工作目录时,就可以使用os.getcwd()方法。 它的具体用法为: ``` import os current_path = os.getcwd() print(current_path) ``` 运行该代码,输出结果为当前所在的工作目录路径。 此外,getcwd()函数还可以接收一个可选参数,即表示返回指定路径的绝对路径。例如: ``` import os path = "../" abs_path = os.getcwd(path) print(abs_path) ``` 运行该代码,输出结果为当前工作目录的上级目录的绝对路径。 总之,os.getcwd()函数非常方便,通过它可以获取当前的工作目录,并且还可以指定路径返回绝对路径。这在我们进行文件操作或者路径处理时都非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值