NameError: name 'filename' is not defined

NameError: name 'filename' is not defined

我正在尝试关注 reddit u/busterroni 的 video 如何制作 reddit 机器人,但是虽然他的程序运行良好,但我的程序一直挂在 "filename" 上下面一行说...

usernames = get_usernames(filename)

...在 main() 下。谁能告诉我问题出在哪里?顺便说一句,我在视频中 12:11 以防有帮助。

import praw
import sys


def main():
    reddit = authenticate()
    usernames = get_usernames(filename) #ERROR
    print(usernames)


def authenticate():
    print('Authenticating...')

    reddit = praw.Reddit(
        'notifier',
        user_agent="BlueWizard3's joketest v0.1")

    print('Authenticated as {}'.format(reddit.user.me()))

    return reddit


def get_usernames(filename):
    try:
        with open(filename, 'r') as f:
            usernames = f.read()
            usernames = usernames.split('\n')
            usernames = filter(None, usernames)
    except IOError:
        print('Error: file ', filename, " not found in the current directory.")
         quit()

    return usernames


main()


def send_message(r, username, subject, body):
    try:
        r.redditor(username).message(subject, body)
    except praw.exceptions.APIException as e:
        if 'USER_DOESNT_EXIST' in e.args[0]:
            print(e.args[0])

if len(sys.argv) != 4:
    print('usage: notifier.py file "subject" "body"')

filename = sys.argv[1] # ADDED
subject = sys.argv[2] # ADDED
body = sys.argv[3] # ADDED

for username in usernames:
    send_message(r, username, subject, body)

第一次在 Stack Overflow 上发帖,请耐心等待。

您的代码缺少为变量赋值的部分 'filename' 在参考视频的 code

这是在结束代码中的第 47 行完成的,第 37 行在 11m 左右:

47:    filename = sys.argv[1]
48:    subject = sys.argv[2]
49:    body = sys.argv[3]
50:
51:    r = bot_login()
52:    usernames = get_usernames(filename)

编辑:现在我们已经解决了这个问题,我们需要解决下一个问题,即在通过 sys.argv 传入值之后,您应该在 main 中得到一些东西。这意味着下面的代码不应该在程序前面的 'main' 方法中,而是在第 50 行

之后
reddit = authenticate()
usernames = get_usernames(filename) #ERROR
print(usernames)