Jupyter Anaconda: 将文本文件加载到Python中

4
我已经在Mac上安装了Anaconda Python和Jupyter。在输入以下代码后:
import numpy as np
import matplotlib.pyplot as plt
iris = np.genfromtxt("data/iris.txt",delimiter=None) 

我遇到了错误:IOError: data/iris.txt not found. 我尝试将iris文件放入anaconda文件夹中:Users/anaconda/lib/python2.7
3个回答

8
在Anaconda Python和Jupyter NoteBook中,您需要使用\\来提供绝对路径,就像下面示例一样。
import pandas as pd
df = pd.read_csv("D:\\Nu\\2SEMESTER\\Data Science\\Assignments\\Assignment-1 data\\file.txt")
df     # with this command you can see your file

3
from pathlib import Path

#file = Path.joinpath('Resources', 'test.txt')
file = Path.cwd() / 'Resources/test.txt'
#file.read_text()

    # Open the file in "read" mode ('r') 
with open(file, 'r') as text:
    textfile = text.read()
    print(textfile)

导入pathlib模块。 更多信息请查看 https://realpython.com/python-pathlib/


0

您不应该将目标文件data/iris.txt放在Anaconda文件夹中。

您应该将文件放在调用Python的位置。

# Bash
$ cd Downloads/
$ ls
data/

$ cd data/
$ ls
iris.txt

$ cd ..
$ python script.py

当Python“搜索”文件时,它会搜索以下两个位置之一:

  • 从调用它的目录开始(如果您使用相对路径-不以/字符开头)
  • 根目录(如果您使用绝对路径-以/字符开头,即根目录)

如果您希望脚本能够从任何目录运行,请在代码中使用绝对路径。

import os

base_path = "/path/to/directory/holding/file/"
filename = "iris.txt"
path_to_file = os.path.join(base_path, filename)
fd = open(path_to_file , 'r')

最好的做法可能是将此路径指定为变量,以便将来可以轻松更改。我已经包含了额外的(在这种情况下是冗余的)代码,以便让您了解可能使用的功能。


但是错误提示说:Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/ashwinc/anaconda/lib/python2.7/site-packages/numpy/lib/npyio.py", line 1451, in genfromtxt
这不是意味着它正在anaconda文件夹中搜索吗?
- bot
这就是回溯。它会逐步检查程序中“失败”的每个步骤,并指定哪个确切的函数调用引发了错误。在这种情况下,是npyio.py。函数npyio.py引发了错误IOError: data/iris.txt未找到。换句话说,回溯只是告诉你某个函数试图告诉你某个错误。 - Jamie Phan
好的。所以我使用了你提供的import os代码片段。在base_path中,我将目录放在了桌面上一个包含鸢尾花数据的文件夹中。然后我按照你写的方式复制了你的其余代码。然后我重新运行了import numpy as np import matplotlib.pyplot as plt iris = np.genfromtxt("data/iris.txt",delimiter=None)。但是我仍然得到相同的错误。 - bot
好的,以上代码是如何使用绝对路径的示例。简而言之,在函数调用np.genfromtext(...)中指定的路径如果是相对路径,则第一个参数必须指向从哪里调用Python的文件。 - Jamie Phan
这位用户是在提到Jupyter Notebook吗? - user391339

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接