在控制台中执行代码时,os.chdir()不起作用

时间:2019-05-07 08:25:14

标签: python-3.x spyder python-os

我正在使用surprise软件包和Python 3.6构建推荐系统。我有一个名为MovieLens的类,可加载数据集并进行一些数据预处理。 os.chdir()函数在脚本执行时可以正常工作,但是在ipython控制台中执行时会引发错误。 这是我的MovieLens类:

import csv
import sys
import re

from surprise import Dataset
from surprise import Reader

from collections import defaultdict
import numpy as np

#__file__ = 'MovieLens.py'
class MovieLens:

    movieID_to_name = {}
    name_to_movieID = {}
    ratingsPath = '../ml-latest-small/ratings-mine.csv'
    moviesPath = '../ml-latest-small/movies-mine.csv'

    def loadMovieLensLatestSmall(self):



        os.chdir(os.path.dirname(sys.argv[0]))
        print(os.getcwd())

        ratingsDataset = 0
        self.movieID_to_name = {}
        self.name_to_movieID = {}

        reader = Reader(line_format='user item rating timestamp', sep=',', skip_lines=1)

        ratingsDataset = Dataset.load_from_file(self.ratingsPath, reader=reader)

        with open(self.moviesPath, newline='', encoding='ISO-8859-1') as csvfile:
                movieReader = csv.reader(csvfile)
                next(movieReader)  #Skip header line
                for row in movieReader:
                    movieID = int(row[0])
                    movieName = row[1]
                    self.movieID_to_name[movieID] = movieName
                    self.name_to_movieID[movieName] = movieID

        return ratingsDataset

我的工作目录是:F:\RecSys-Materials\Framework 并且数据集位于以下目录中:F:\RecSys-Materials\ml-latest-small

我的anaconda安装在以下目录中:C:\Users\Samarth\Anaconda3

我查看了sys.argv参数,它返回了一个空列表。我也尝试使用os.path.dirname(__file__),但spyder无法识别__file__变量。

我了解到os.path.dirname()必须传递路径。那么,为什么在我执行脚本时可以正常工作?我在这里想念什么?

0 个答案:

没有答案