Как импортировать другой скрипт в тот же каталог? - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь поставить несколько python скриптов по расписанию и запустить в main.py. Эти сценарии помещаются в ту же папку.

main.py:

import schedule
import time
from test1 import dd

schedule.every(2).seconds.do(dd,fname)

while True:
    schedule.run_pending()
    time.sleep(1)

test1.py:

def dd(fname):
    print('hello' + fname)

dd('Mary')
dd('John')

Он заканчивается как эти 2 имени и name 'fname' is not defined.

Как определить аргумент в main.py файле? Если у меня более одного def в скрипте, нужно ли мне импортировать несколько раз в main.py, а скрипт, который я импортирую поверх main.py, запускается один раз перед запуском расписания? Это значит, что он будет работать, пока вы его импортируете?

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Ваша проблема в том, что вы пытаетесь использовать аргумент функции как собственную переменную. Здесь проблема не с импортом.

Попробуйте следующее:

import schedule
import time
from test1 import dd

schedule.every(2).seconds.do(dd,("Any String",))

while True:
    schedule.run_pending()
    time.sleep(1)
0 голосов
/ 05 августа 2020

Вы не определяете свое fname в main.py, поэтому написано name 'fname' is not defined. Вы только импортируете функции в main.py из test1.py

Вот измененный код: main.py

import schedule
import time
from test1 import dd

fname="Mary"
schedule.every(2).seconds.do(dd,fname)

while True:
    schedule.run_pending()
    time.sleep(1)

test1.py

def dd(fname):
    print('hello' + fname)

если вы хотите ввести более одной строки, просто используйте список! Вот пример кода для test1.py :

def dd(fname:list):
    for n in fname:
        print('hello' + n)

Эти коды протестированы с использованием Python 3.7.7

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