os.chdir () не работает при выполнении кода в консоли - PullRequest
0 голосов
/ 07 мая 2019

Я строю систему рекомендаций, используя пакет 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

И моя анаконда установлена ​​в каталоге: C:\Users\Samarth\Anaconda3

Я посмотрел на аргумент sys.argv, и он возвращает пустой список.я также пытался использовать os.path.dirname(__file__), но spyder не распознает переменную __file__.

Я понимаю, что os.path.dirname() должен быть пройден путь.Так почему же это работает, когда я выполняю сценарий?Что мне здесь не хватает?

...