Запуск графа с помощью объектно-ориентированного программирования через Python - PullRequest
0 голосов
/ 28 апреля 2018

Мой вопрос касается ввода в объект с python.

Я пытаюсь создать объект, с помощью которого я открываю этот файл python, он просит меня ввести путь к файлу данных, я ввожу путь, и он выведет для меня график этих данных.

Пока у меня есть это:

def graph_openprices():
while True:
    try:
        from matplotlib import pyplot as plt
        from matplotlib import style
        import numpy as np
        path_openprices = input("Input file path_g: ")

        style.use('ggplot')

        x,y = np.loadtxt(path_openprices, unpack = True, delimiter= ',')
        plt.plot(x,y)

        plt.title('My chart')
        plt.ylabel('Y axis')
        plt.xlabel('X axis')

        plt.show()

        anykey = input("Input anything to return to the main menu ")
        exit

    except OSError:
        print("Directory incorrect, please input a valid directory")
        graph_openprices()

graph_openprices()

Я запускаю этот код, однако, каждый раз, когда он просит меня ввести свой код, и я ввожу его

D:\Mycode\exampleFile.txt

Ничего не происходит, ничего не возникает, и это просто пространство. Однако, когда я деактивирую строку path_openprices, поставив перед собой знак # и введя путь, где path_openprices находится в переменной x, y, это сработает.

Кто-нибудь знает, что я делаю неправильно и как я могу заставить работать часть ввода, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы используете try только с определенным исключением соответствия в цикле while True, поэтому, если произойдет какая-то другая ошибка, вам не сообщат, что это было.

Используйте операторы print, чтобы увидеть, что делает код, когда кажется, что он ничего не делает.

0 голосов
/ 28 апреля 2018

Вы используете input, который пытается оценить данный ввод как код Python - см. Документацию , которая говорит вам, что это эквивалентно выполнению eval(raw_input(...)).

$ echo 'D:\MyCode\lol.txt' | python -c 'input()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 1
    D:\MyCode\lol.txt
     ^
SyntaxError: invalid syntax

Обычно вы не хотите оценивать произвольные строки, заданные пользователем, поэтому вместо этого используйте raw_input.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...