Как передать переменную из одного скрипта Python в другой?

#python #tkinter

#python #tkinter

Вопрос:

Я знаю, что этот вопрос обсуждается на форумах, и я много читал об этом, но у меня все еще нет нужного мне решения.

Следующий код — очень упрощенная версия моего реального кода.

Мой первый сценарий следующий (kyssa1.py ):

 import os
import sys

def type():
    global dictionary
    dictionary="C:Python27Myprojectsphysics.txt"
    os.system("C:Python27Myprojectskyssa2.py")


from Tkinter import *
t = Tk()

b = Button(t, text="Start", command = lambda:type())
b.pack(expand=Y)


t.mainloop()
  

И мой второй скрипт (kyssa2.py ) следует:

 # -*- coding: utf-8 -*-

from kyssa1 import dictionary   

def open():
    global dictionary
    global lines
    global datafile
    datafile = file(dictionary)
    lines = [line.decode('utf-8').strip() for line in datafile.readlines()]
    for i in lines:
        text.insert(END, i)

open()

from Tkinter import *

root = Tk()

text = Text(root,font=("Purisa",12))
text.pack()

root.mainloop()
  

Что я хочу сделать, это открыть файл physics.txt в kyssa2.py и выполните команду в функции open() с этим текстом, но это работает не так, как я хочу. Что происходит, когда я нажимаю кнопку «Пуск», — это другое окно, подобное определенному в «kyssa1.py » появляется. Как я мог просто передать словарь переменных из одного скрипта в другой?

Ответ №1:

В kyssa1.py объявлении dictionary в области видимости модуля, т.е. Вне type() функции. Вам не нужно использовать global in kyssa2.py , вы можете обратиться непосредственно к dictionary .

Кроме того, чтобы открыть файл, используйте open() вместо file() :

 datafile = open(dictionary)