Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用相对路径打开data_文件夹中的文件?_Python_Pandas_Relative Path - Fatal编程技术网

Python 如何使用相对路径打开data_文件夹中的文件?

Python 如何使用相对路径打开data_文件夹中的文件?,python,pandas,relative-path,Python,Pandas,Relative Path,我正在使用pandas,需要读取一些csv文件,结构如下: 文件夹/folder2/scripts\u文件夹/script.py from pathlib import Path path = Path(__file__).parent / "../data_folder/data.csv" pd.read_csv(path) 文件夹/folder2/data_文件夹/data.csv 如何从scripts\u文件夹中的脚本打开data.csv文件 我试过这个: absol

我正在使用pandas,需要读取一些csv文件,结构如下:

文件夹/folder2/scripts\u文件夹/script.py

from pathlib import Path
path = Path(__file__).parent / "../data_folder/data.csv"
pd.read_csv(path)
文件夹/folder2/data_文件夹/data.csv

如何从
scripts\u文件夹中的脚本打开
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
试一试


您可以使用
\uuuu文件\uuuuu
属性:

import os
import pandas as pd
df = pd.read_csv(os.path.join(os.path.dirname(__file__), "../data_folder/data.csv"))

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

pd.read_csv('../../../data_folder/data.csv')
将上升3级,然后进入data_文件夹(假设它在那里) 或

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

对于非Windows用户:

import pandas as pd
import os

os.chdir("../data_folder")
df = pd.read_csv("data.csv")
import pandas as pd

df = pd.read_csv(r"C:\data_folder\data.csv")
对于Windows用户:

import pandas as pd
import os

os.chdir("../data_folder")
df = pd.read_csv("data.csv")
import pandas as pd

df = pd.read_csv(r"C:\data_folder\data.csv")

上面位置中的前缀r为pandas数据帧提供位置时节省了时间。

我也在寻找相对路径版本,这样可以正常工作。注意:当运行(Spyder 3.6)时,您将看到(unicode错误)'UnicodeScape'编解码器无法在结束三引号处解码字节。删除有问题的注释行14和15,调整环境的文件名和位置,并检查缩进

import pandas as pd
df = pd.read_csv('C:/data_folder/data.csv')
--编码:utf-8-- “”“ 创建于2020年1月24日星期五12:12:40

资料来源:

表明: 通过指定相对路径-windows版本加载不在CWD中的csv

@作者:道格

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

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

保持物品整洁:


使用python或pandas时,当您使用
read_csv
pd.read_csv
时,它们都会查看当前工作目录,默认情况下,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())

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

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")
您还可以将
数据
目录设置为前缀

import pandas as pd
DATA_DIR = "~/folder/folder2/data_folder/"
df = pd.read_csv(DATA_DIR+"data.csv")
你可以像@nikos tavoularis所说的那样利用这个机会

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

这里的链接回答了这个问题

基本上,使用
Path
from
pathlib
可以在script.py中执行以下操作

from pathlib import Path
path = Path(__file__).parent / "../data_folder/data.csv"
pd.read_csv(path)
你可以试试这个

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

事实上,这是最好的解决方案。为什么我们不指定所有父文件夹?还可以使用osThanks作为答案。当我使用双引号而不是单引号时,问题得到了解决。感谢这是我作为python/机器学习初学者所需要的解释!没有理由导入操作系统。请参阅@ksooklall's answer.pandas自动查找运行笔记本的CSV或任何其他数据集文件,但os.chdir()只是更改要从中拾取多个数据的工作目录位置。如果你想读取CSV文件,可能你有大量的数据存储在一个给定的文件夹中,那么你就不需要每次都写入位置。这会产生副作用,并且为了某种感觉上的方便而忽略这些数据是不好的做法。我之所以说“感觉方便”,是因为另一个答案更简短、可读性更强,并且没有你不必要的依赖性。提供的答案被标记为低质量帖子供审查。以下是一些指导原则。提供的答案不正确,仅代码答案不被视为“好”答案。从…起OP特别说明了
相对路径
,但您已经用
绝对路径
回答了问题。这是否回答了您的问题?另外:,
from pathlib import Path
path = Path(__file__).parent / "../data_folder/data.csv"
pd.read_csv(path)
df = pd.read_csv("E:\working datasets\sales.csv")
print(df.head())