我无法确定某个文件的路径。实际上,它在Mac OS上可以正常运行,但是当我在Ubuntu上运行相同的代码块时,会引发此错误:
FileNotFoundError:[错误2]没有这样的文件或目录: '/Desktop/Numeratti/pg2dm-python-master/ch2/BX-Dump/BX-Book-Ratings.csv'
我已经用sublime-text编写了脚本,然后从终端(ubuntu)运行它
def loadBookDB(self, path=''):
"""loads the BX book dataset. Path is where the BX files are
located"""
self.data = {}
i = 0
#
# First load book ratings into self.data
#
f = codecs.open(path + "BX-Book-Ratings.csv", 'r', 'utf8')
for line in f:
i += 1
#separate line into fields
fields = line.split(';')
user = fields[0].strip('"')
book = fields[1].strip('"')
rating = int(fields[2].strip().strip('"'))
if user in self.data:
currentRatings = self.data[user]
else:
currentRatings = {}
currentRatings[book] = rating
self.data[user] = currentRatings
f.close()
f = codecs.open(path + "BX-Books.csv", 'r', 'utf8')
for line in f:
i += 1
#separate line into fields
fields = line.split(';')
isbn = fields[0].strip('"')
title = fields[1].strip('"')
author = fields[2].strip().strip('"')
title = title + ' by ' + author
self.productid2name[isbn] = title
f.close()
#
# Now load user info into both self.userid2name and
# self.username2id
#
f = codecs.open(path + "BX-Users.csv", 'r', 'utf8')
for line in f:
i += 1
#print(line)
#separate line into fields
fields = line.split(';')
userid = fields[0].strip('"')
location = fields[1].strip('"')
if len(fields) > 3:
age = fields[2].strip().strip('"')
else:
age = 'NULL'
if age != 'NULL':
value = location + ' (age: ' + age + ')'
else:
value = location
self.userid2name[userid] = value
self.username2id[location] = userid
f.close()
我想知道为什么会这样。问题是我无法加载数据集。我认为这与Linux中的文件路径有关,原因是当我通过MAC OS上的终端运行相同的脚本时,它会完美加载数据集。
谢谢!
答案 0 :(得分:0)
有多种方法可以解决此问题
1。
尝试在文件浏览器中找到您的文件,右键单击它->属性->复制位置,添加文件名。
在Linux中,文件名通常以/home/<username>/...
或短~/...
开头
2。
如果您在终端中使用python,则可以使用
>>> import os
>>> cwd = os.getcwd()
>>> my_dir = os.path.join(cwd, "my_dir")
3。
如果您没有终端文件浏览器,则可以使用cd <dir>
在文件系统中移动,并使用ls
查找文件,如果找到了文件,则使用realpath <file>
打印整个文件名。