用os库排查vscode中python路径的问题

文章描述了在VSCode中使用Python读取CSV文件时遇到的路径问题。通过引入os库尝试获取当前工作路径,发现由于matplotlib和seaborn库的影响,os库的功能受限。注释这两个库后,os.getcwd()能正常工作,揭示了工作路径与文件实际位置不符的问题。解决方案包括改变工作路径或修改文件读取指令。问题源于VSCode识别的工作路径是Git根目录而非代码所在目录。
摘要由CSDN通过智能技术生成

用os库排查vscode中python路径的问题

问题描述:

vscode中用pd.read_csv(":/1-set.csv")时
报错no such file or dirctionary

读取csv文件时出现no such file or dirctionary 是一个很常见的问题,特别是在采用绝对路径可以读取到文件,但是用:/相对路径找不到文件的情况下。百度了以下说可能时python插件问题,但重装后也没有解决。突发奇想了以是否可以通过os库的方式打印路径来排查问题,于是

print("CURRENT PATH IS")
print(os.getcwd())

打印当前工作路径进行检查。
然而终端输出却报错,为了解决这个简单的路径问题,却产生了另一个比较怪的问题:试了一下脚本中os库的所有成员似乎都不能运行,这应该是脚本本身存在另外的问题,但是影响到了os库的使用,在此也记录一下

CURRENT PATH IS
Backend QtAgg is interactive backend. Turning interactive mode on.

百度搜索发现该错误与matplotlib库有关,

import os
import pandas                   as pd
import numpy                    as np
#import matplotlib.pyplot        as plt
#import seaborn                  as sns
from collections                import Counter
from sklearn.preprocessing      import LabelEncoder
from sklearn.model_selection    import train_test_split
#from imblearn.over_sampling     import SMOTE
from scipy.stats                import zscore

在盲目的摸索和粗暴的试错后发现,只要将matplotlib和seaborn两个库注释掉,os.getswd()就能正常地输出,不知道为啥,此时:

CURRENT PATH IS
E:\workplaceE\IDSM

再用os.walk找一下csv文件和py文件位置

print("CURRENT PATH STRUCTURE")
for root,dirs,files in os.walk('.',topdown=True):
    for file in files:
        if file.endswith(".py"):
             print(os.path.join(root, file))
    for file in files:
        if file.endswith(".csv"):
             print(os.path.join(root, file))

发现输出类似于:

...
.\balanced\xgb.py
.\balanced\1-set.csv
.\inblanced\1-set.csv
...

路径前缀应该是

E:\workplaceE\IDSM\balanced

与当前python工作路径前缀不同,所以用:\无法定位文件,到此通过os库定位了路径问题的本质,解决方法就很多了,比如修改工作路径:

os.chdir(b"E:\workplaceE\IDSM\balanced")

或者修改指令:

pd.read_csv(":/blanced/1-set.csv")

复盘一下,这里vscode识别的工作路径是git的根目录,而不是当前.py代码所在的目录,所以产生了路径问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值