我正在与this tutorial合作,我正在使用熊猫。
这是我键入的代码片段并收到错误:
users = pd.read_csv('ml-100k//u.users', sep = '|', names = ['User ID', 'Age','Gender', 'Occupation','Zip Code'])
上述代码产生的错误:
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
users = pd.read_csv('ml-100k//u.users', sep = '|', names = ['User ID', 'Age','Gender', 'Occupation','Zip Code'])
File "C:\Program Files\Python 3.5\lib\site-packages\pandas\io\parsers.py", line 709, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Program Files\Python 3.5\lib\site-packages\pandas\io\parsers.py", line 449, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Program Files\Python 3.5\lib\site-packages\pandas\io\parsers.py", line 818, in __init__
self._make_engine(self.engine)
File "C:\Program Files\Python 3.5\lib\site-packages\pandas\io\parsers.py", line 1049, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\Program Files\Python 3.5\lib\site-packages\pandas\io\parsers.py", line 1695, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 402, in pandas._libs.parsers.TextReader.__cinit__
File "pandas\_libs\parsers.pyx", line 718, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: File b'ml-100k//u.users' does not exist
我想通过写一下如何使它发挥作用:
users = pd.read_csv(r'C:\\Users\\User\\Documents\\Python3\\ml-100k\\ml-100k\\u.user', sep = '|', names = ['User ID', 'Age','Gender', 'Occupation','Zip Code'])
如果没有在完整文件路径中写入,是否有更简单的方法?我使用的是Windows 64 Pro。
答案 0 :(得分:0)
有几种方法可以在pandas.read_csv()
documentation中指定路径:
filepath_or_buffer :
str
,pathlib.Path
,py._path.local.LocalPath
或任何带有read()
方法的对象(例如文件句柄或StringIO
)字符串可以是URL。有效的URL方案包括http,ftp,s3和file。对于文件URL,需要主机。例如,本地文件可以是文件
://localhost/path/to/table.csv
class
pathlib.Path(*pathsegments)
PurePath
的子类,此类表示系统路径风格的具体路径(实例化它会创建PosixPath
或WindowsPath
):>>> Path('setup.py') PosixPath('setup.py')
pathsegments 的指定方式与
PurePath
类似。
class
pathlib.WindowsPath(*pathsegments)
Path
和PureWindowsPath
的子类,此类表示具体的Windows文件系统路径:>>> WindowsPath('c:/Program Files/') WindowsPath('c:/Program Files')
pathsegments 的指定方式与
PurePath
类似。
class
io.TextIOBase
文本流的基类。此类为流I / O提供基于字符和行的接口。没有
readinto()
方法,因为Python的字符串是不可变的。它继承了IOBase。没有公共构造函数。TextIOBase
除了IOBase
之外,还提供或覆盖了这些数据属性和方法:<强>
read(size)
强>从流中读取并返回最多
size
个字符str。如果size
为负数或None
,则读取直到EOF。
TextIOBase除了提供来自IOBase的数据属性和方法外,还提供或覆盖这些数据属性和方法:
此外,我发现question about path specifying in Windows,答案说,它可以通过多种方式完成:
你可以随时使用:
'C:/mydir'
这适用于linux和windows。其他可能性是
'C:\\mydir'
如果您对某些名称有疑问,也可以尝试原始字符串:
r'C:\mydir'
但最佳做法是使用os.path模块函数 始终为您的操作系统选择正确的配置:
os.path.join(mydir, myfile)
TLDR :最简单,最简单的方法是将路径变量指定为
CSV_FILE = r'C:\Users\User\Documents\Python3\ml-100k\ml-100k\u.user'
或
CSV_FILE = 'C:\\Users\\User\\Documents\\Python3\\ml-100k\\ml-100k\\u.user'
更好,但仍然很简单的方法
CSV_FILE = os.path.join('C:', 'Users', 'User', 'Documents', 'Python3', 'ml-100k', 'ml-100k', 'u.user')
您还可以指定相对于工作目录的路径(例如,如果您的脚本位于C:\Users\User\Documents\Python3\ml-100k\ml-100k
,则只需指定文件名:
CSV_FILE = 'u.user'
您也可以指定网址,如上面提到的那样。
答案 1 :(得分:0)
我发现使用pathlib
模块很有用。我在我的脚本(或专用文件)之上创建Path
个对象,如下所示:
from pathlib import Path
path_1 = Path(r'C:\Users\User\Documents\Python3\ml-100k\ml-100k') # absolute path
path_2 = Path.cwd() # current working directory
然后,这对其余脚本很有帮助。您可以像这样使用这些对象:
user = pd.read_csv(path_2.joinpath('u.users'), sep = '|', names = ['User ID', 'Age','Gender', 'Occupation','Zip Code'])