我正在使用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
答案 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,并根据您的环境调整文件名和位置,并检查是否缩进。
“”“ 创建于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_csv
或pd.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```