Я делал язык программирования на Python 3.6, когда наткнулся на что-то странное. С помощью следующего кода я получаю ошибку с интересным выводом.
import sys
import tkinter as tk
import datetime
class _Viper:
def __init__(self):
pass
def error(self, err, title="ERROR"):
root = tk.Tk()
root.title(title)
root["bg"] = "#d56916"
label = tk.Label(root, text=err)
labelt = tk.Label(root, text=str(datetime.datetime.now()))
label.config(bg="#e67a27")
labelt.config(bg="#d56916")
label.grid()
labelt.grid()
root.mainloop()
def grabdata(self, line):
raw = line.split("(")
raw[1] = raw[1][:-1]
print(type(raw[1]))
raw[1] = raw[1].split()
#raw[1] = raw[1].split('"')
return {
"keyword" : raw[0],
"params" : raw[1].split()
}
Viper = _Viper() #For PyLint
"""
try:
sys.argv[1]
execute = True
except:
execute = False
Viper.error("Error `Viper.FileNotProvidedError` @ interpreter.py. Do not directly run this file. Run it with `Viper0.0.0a C:\\path\\to\\file`, or associate viper to Viper0.0.0a.bat.")
"""
sys.argv.append("C:\\viper\\interpreter\\testie.vi")
execute = True
if execute:
extension = str(sys.argv[1][-2]+sys.argv[1][-1])
if extension.upper() == "VI":
with open("C:\\viper\\interpreter\\testie.vi", "r") as src:
lines = src.readlines()
for line in lines:
Viper.grabdata(line)
else:
Viper.error("Error `Viper.ExtensionNotViperError` @ interpreter.py. Please run this with a file with the \"vi\" extension.")
После запуска я получаю эту ошибку.
Вы видите то, что я вижу? <class 'str'>
это класс raw[1]
. Здесь пусто. Но когда я ссылаюсь на него после, он говорит, что это список!
Может кто-нибудь сказать мне, что здесь происходит?
EDIT
Я забыл добавить файл viper.
setvar("hmm", "No")
РЕДАКТИРОВАТЬ 2
Я собираюсь объяснить мою проблему. Он обрабатывает строку как список .