如何用pandas使用相对路径在`data_folder`中打开我的文件?

时间:2016-02-13 19:25:48

标签: python pandas relative-path

我正在使用pandas并且需要阅读一些csv文件,结构是这样的:

  

的文件夹/文件夹2 / scripts_folder / script.py

     

的文件夹/文件夹2 / data_folder / data.csv

如何从scripts_folder脚本中打开data.csv文件?

我试过这个:

absolute_path = os.path.abspath(os.path.dirname('data.csv'))

pandas.read_csv(absolute_path + '/data.csv')

我收到此错误:

File folder/folder2/data_folder/data.csv does not exist

13 个答案:

答案 0 :(得分:23)

尝试

import pandas as pd
pd.read_csv("../data_folder/data.csv")

答案 1 :(得分:13)

Pandas将从您当前的python文件所在的位置开始查找。因此,您可以从当前目录移动到数据所在的位置' ..' 例如:

pd.read_csv('../../../data_folder/data.csv')

将升级3级然后进入data_folder(假设它在那里) 或

pd.read_csv('data_folder/data.csv')

假设您的data_folder与.py文件位于同一目录中。

答案 2 :(得分:5)

f-strings保持整洁:

import os
import pandas as pd

data_files = '../data_folder/'
csv_name = 'data.csv'

pd.read_csv(f"{data_files}{csv_name}")

答案 3 :(得分:4)

您可以使用<?php $uri = 'http://localhost/kafapp/api/transactions'; $ch = curl_init($uri); curl_setopt_array($ch, array( CURLOPT_HTTPHEADER => array('Authorization: 01501fe892e556fcd7cf841bd0ce9999'), CURLOPT_RETURNTRANSFER =>true, CURLOPT_VERBOSE => 1 )); $out = curl_exec($ch); curl_close($ch); echo $out; ?> 属性:

__file__

答案 4 :(得分:3)

对于非Windows用户:

root = newNode;

对于Windows用户:

root->left = import_treeNode(root->left, nodes, 2 * curr_i + 1, size);

上面的位置中的前缀r为熊猫数据框提供位置时可以节省时间。

答案 5 :(得分:2)

# script.py
current_file = os.path.abspath(os.path.dirname(__file__)) #older/folder2/scripts_folder

#csv_filename
csv_filename = os.path.join(current_file, '../data_folder/data.csv')

答案 6 :(得分:2)

我也在寻找相对路径版本,这个工作正常。请注意,在运行(Spyder 3.6)时,您将看到(unicode错误)“ unicodeescape”编解码器无法在结尾的三重引号处解码字节。删除有问题的注释行14和15,并根据您的环境调整文件名和位置,并检查是否缩进。

--编码:utf-8--

“”“ 创建于2020年1月24日星期五12:12:40

来源: Read a .csv into pandas from F: drive on Windows 7

展示: 通过指定相对路径-Windows版本

来加载不在CWD中的csv

@author:道格

从CWD C:\Users\Doug\.spyder-py3\Data Camp\pandas我们将加载文件

C:/Users/Doug/.spyder-py3/Data Camp/Cleaning/g1803.csv

“”“

import csv

trainData2 = []

with open(r'../Cleaning/g1803.csv', 'r') as train2Csv:

  trainReader2 = csv.reader(train2Csv, delimiter=',', quotechar='"')

  for row in trainReader2:

      trainData2.append(row)

print(trainData2)

答案 7 :(得分:0)

& <path_to_exe> -install $user ($password -replace '"', '\"'

答案 8 :(得分:0)

在使用read_csvpd.read_csv的情况下,使用python或pandas时,它们都会查找当前的工作目录,默认情况下是python进程开始的地方。因此,您需要使用os模块来chdir(),并从那里获取它。

import pandas as pd 
import os
print(os.getcwd())
os.chdir("D:/01Coding/Python/data_sets/myowndata")
print(os.getcwd())
df = pd.read_csv('data.csv',nrows=10)
print(df.head())

答案 9 :(得分:0)

您始终可以使用~指向主目录,然后可以引用数据文件夹。

import pandas as pd
df = pd.read_csv("~/mydata/data.csv")

对于您的情况,应该是这样

import pandas as pd
df = pd.read_csv("~/folder/folder2/data_folder/data.csv")

您还可以将data目录设置为前缀

import pandas as pd
DATA_DIR = "~/folder/folder2/data_folder/"
df = pd.read_csv(DATA_DIR+"data.csv")

您可以利用@ nikos-tavoularis所说的f-strings

import pandas as pd
DATA_DIR = "~/folder/folder2/data_folder/"
FILE_NAME = "data.csv"
df = pd.read_csv(f"{DATA_DIR}{FILE_NAME}")

答案 10 :(得分:0)

这里的这个链接回答了它。 Reading file using relative path in python project

基本上使用 Path 中的 pathlib,您将在 script.py 中执行以下操作

from pathlib import Path
path = Path(__file__).parent / "../data_folder/data.csv"
pd.read_csv(path)

答案 11 :(得分:0)

你可以试试这个。

df = pd.read_csv("E:\working datasets\sales.csv")
print(df.head())

答案 12 :(得分:0)

import os

s_path = os.getcwd()
# s_path = "...folder/folder2/scripts_folder/script.py"
s_path = s_path.split('/')
print(s_path)
# [,..., 'folder', 'folder2', 'scripts_folder', 'script.py']

d_path = s_path[:len(s_path)-2] + ['data_folder', 'data.csv']
print(os.path.join(*d_path))
# ...folder/folder2/data_folder/data.csv```