Функция Dropbox не импортирует или работает из другого локального файла - PullRequest
0 голосов
/ 14 января 2020

У меня есть два python файла, один из которых я написал и храню функции, а другой - где они используются.

Функция 'HW' импортирует и запускает, а dbxupld - нет. Кто-нибудь может подсказать, как я мог заставить это работать. Большое спасибо.

Python_script1.py

def HW():
    print('Hello, World!')


def dbxupld(FileFROM,FileTO):
    import dropbox

    class TransferData:
        def __init__(self, access_token):
            self.access_token = access_token
        def upload_file(self, file_from, file_to):
            dbx = dropbox.Dropbox(self.access_token)
            with open(file_from, 'rb') as f:
                dbx.files_upload(f.read(), file_to)

    def main():
        access_token = "[access code hidden]"
        transferData = TransferData(access_token)
        file_from = FileFROM
        file_to = FileTO
        transferData.upload_file(file_from, file_to)

    if __name__ == '__main__':
        main()

Python_script2.py

from Python_script1 import HW
from Python_script1 import dbxupld

HW()

FileFROM = '/home/Setup stuff.pdf'
FileTO = '/upload_testing/Setup Stuff.pdf'
dbxupld(FileFROM,FileTO)

Out:

Hello, World!

Но нет загрузки в Dropbox

1 Ответ

1 голос
/ 14 января 2020

Функция импортируется правильно. Проблема заключается в этой части:

if __name__ == '__main__':
    main()

Поскольку вы импортируете Python_script1 внутри Python_script2, значение __name__ внутри Python_script1 равно Python_script1, а не __main__. Условие не выполнено и main никогда не вызывается. Для этого удалите условие if __name__ == 'main'.

Для получения дополнительной информации о __main__ и __name__ см. https://docs.python.org/3/library/ main . html

...