首页 > 解决方案 > 在 Carnets Plus 中打开数据集

问题描述

我有一台带有 M1 芯片的 iPad Pro。我尝试在我的 iPad 上以几种不同的方式打开这个数据集。我可以在 Jupyter Notebook 环境中的 Mac mini 上打开它。我在 iPad 上安装了 Carnets Plus,并将数据集保存到 iPad 上的 Carnets Plus 目录(在 iPad 文件应用程序中可见)。我已经直接在 Carnets Plus 中打开了数据集文件,但我无法在编程环境中调用它。我假设我的代码中没有正确的文件路径。我尝试从网站的原始位置打开文件,但这会产生解析器错误。

file_df = pd.read_csv('./network_data_CYB_674.csv')
file_df

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-4-c7026e26accd> in <module>
      1 #file_df = pd.read_csv('⁨⁨/iCloud Drive/⁨⁩⁨Classes⁩/674⁩/⁨⁩⁨project⁩/network_data_CYB_674.csv')
      2 #file_df = pd.read_csv('/Users/jksedik/Library/Mobile\ Documents/com~apple~CloudDocs/Classes/674/project/network_data_CYB_674.csv')
----> 3 file_df = pd.read_csv('./network_data_CYB_674.csv')
      4 #file_df = pd.read_csv('https://engage.utica.edu/learn/mod/resource/view.php?id=2075276', error_bad_lines=False, engine = "python")
      5 #file_df = pd.read_csv('https://engage.utica.edu/learn/mod/resource/view.php?id=2075276', engine = 'python')

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/parsers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)
    608     kwds.update(kwds_defaults)
    609 
--> 610     return _read(filepath_or_buffer, kwds)
    611 
    612 

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
    460 
    461     # Create the parser.
--> 462     parser = TextFileReader(filepath_or_buffer, **kwds)
    463 
    464     if chunksize or iterator:

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
    817             self.options["has_index_names"] = kwds["has_index_names"]
    818 
--> 819         self._engine = self._make_engine(self.engine)
    820 
    821     def close(self):

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
   1048             )
   1049         # error: Too many arguments for "ParserBase"
-> 1050         return mapping[engine](self.f, **self.options)  # type: ignore[call-arg]
   1051 
   1052     def _failover_to_python(self):

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
   1865 
   1866         # open handles
-> 1867         self._open_handles(src, kwds)
   1868         assert self.handles is not None
   1869         for key in ("storage_options", "encoding", "memory_map", "compression"):

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/parsers.py in _open_handles(self, src, kwds)
   1360         Let the readers open IOHanldes after they are done with their potential raises.
   1361         """
-> 1362         self.handles = get_handle(
   1363             src,
   1364             "r",

/private/var/containers/Bundle/Application/513EC314-F2E5-4B82-BE2F-B4B49E05C61D/Carnets-sci.app/Library/lib/python3.9/site-packages/pandas/io/common.py in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
    640                 errors = "replace"
    641             # Encoding
--> 642             handle = open(
    643                 handle,
    644                 ioargs.mode,

FileNotFoundError: [Errno 2] No such file or directory: './network_data_CYB_674.csv'

标签: pythoniospandasipadjupyter

解决方案


通过在https://github.com/holzschu/carnets/issues上打开问题或向 carnets_jupyter@icloud.com 发送电子邮件,您可能会得到更快的响应。

回答你的问题:如果笔记本和 CSV 文件在同一个目录中,并且两个文件都在 iPad 上的 Carnets Plus 目录中,如你所说,那么它应该可以工作(因为它们在 Carnets Plus 的沙箱中, Carnets Plus 拥有自己的沙箱的权限)。所以它要么是 Carnets Plus 中的错误,要么是文件不是您认为的那样。例如,文件应用程序一直在为某些文件添加额外的后缀,同时将它们隐藏给查看器。

Carnets Plus 具有外壳转义功能,因此您可以在单元格中调试问题!ls(它将显示所有文件)和!pwd(检查您所在的位置)(%ls并且%pwd也可以工作)。

如果笔记本和 CSV 文件位于不同的目录中,那就是问题所在,尽管如果 CSV 文件位于 Carnets Plus 自己的目录中,您可以使用~/Documents/network_data_CYB_674.csv.

如果笔记本和 CSV 文件在同一个文件夹中,但在 Carnets Plus 自己的目录之外,您必须授予 Carnets Plus 对整个文件夹的访问权限。您可以通过单击顶部工具栏上的文件夹图标,然后导航到封闭文件夹并单击“选择”来完成此操作。


推荐阅读