pycoding Ответов: 1

Как я могу ссылаться на переменную из основного скрипта в импортированном модуле/скрипте?


В моем импортированном скрипте 'scan.py-я хочу сослаться на значение переменной, созданной и инициализированной ранее в основном скрипте. Вот код из основного скрипта:
Input = EJ.get()
       os.system ('python scan.py')
       FileName = str(r"C:\\Users\\Admin\\Documents\\HPython\\WESMFG\\POnumber\\" + Input + ".pdf")


и соответствующий код скрипта scan.py :
output_file = Input
print("Output file: %s" % output_file)
.
.
.
print("Writing output file ...")
img = scan_session.images[0]
img.save(output_file, "JPEG")
print("Done")

'Входные' в магазинах на вход записи виджет Эдж с моей Tkinter GUI-интерфейса. Поэтому я хочу, чтобы пользователь ввел что-то, чтобы этот ввод получил имя нового отсканированного документа.
При запуске основного скрипта он говорит мне, что "вход" не определен.
Поскольку я вроде как новичок в программировании на python, возможно, я ложно игнорирую его
if __name__ == "__main__":
    pyinsane2.init()
    try:
        main()
    finally:
        pyinsane2.exit()
в конце концов scan.py-да. Имеет ли это какое-либо значение для моего вопроса?

Что я уже пробовал:

import __main__

main_global1= __main__.global1
но поскольку "Input" находится в функции, он говорит мне, что в main нет переменной под названием "Input"

1 Ответов

Рейтинг:
2

Richard MacCutchan

Вы не можете использовать локальную переменную в программе, которая выполняется в своей собственной среде. Вам нужно передать это значение в качестве параметра в системном вызове; см. 29.1. sys — специфические для системы параметры и функции — документация Python 3.6.4[^]

Ваш код должен быть:

Input = EJ.get()
# do not use 'r' prefix if the string uses escape sequences
FileName = str("C:\\Users\\Admin\\Documents\\HPython\\WESMFG\\POnumber\\" + Input + ".pdf")
os.system ('python scan.py ' + FileName)


Member 13641865

Спасибо, что запуск этого не показывает никакой ошибки, но он не запускает os.system ('python scan.py' + FileName) строка.

если нет os.path.exists(имя файла):
os.system ('python scan.py' + имя файла)
msg4 = messagebox.showinfo('сканер', 'создан новый документ!')

Какие-нибудь синтаксические ошибки здесь есть? Или команда просто ошибочна ?

Richard MacCutchan

Я могу только предположить, что файл уже существует. Это должно быть легко проверить.