用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代码所在的目录,所以产生了路径问题