这段代码的目的是写我选择的歌曲的歌词。但我被这些语法错误阻止了。不太清楚为什么会这样。
MusicBot.py:
import Opening
import json
import requests
#Variables
artist = 'lil tjay'
song_title = 'Calling My Phone'
keywords = {'phone'}
url = "https://api.lyrics.ovh/v1/" + artist + "/" + song_title
response = requests.get(url)
json_data = json.loads(response.content)
lyrics = json_data['lyrics']
browser()
enter(lyrics)
Opening.py:
import MusicBot
import pyautogui as pg
import time
start = time.perf_counter()
def browser():
pg.hotkey("winleft")
pg.typewrite("opera\n",0.1)
time.sleep(2)
pg.typewrite("beep/n" , 0.1)
def enter(lyrics):
pg.moveTo(-1267, 259 , 0.2)
time.sleep(1)
pg.click(-1267, 259)
for i in range(5):
pg.typewrite(f"{lyrics}\n")
finish = time.perf_counter()
pg.typewrite(f"Test 3 took {finish} seconds\n")
当我想运行 MusicBot.py 时,出现以下错误:
Traceback (most recent call last):
File "c:\Users\amanm\Desktop\Python\Python Crash Course\Part 2\MusicBot.py", line 1, in <module>
import Opening
File "c:\Users\amanm\Desktop\Python\Python Crash Course\Part 2\Opening.py", line 1, in <module>
import MusicBot
File "c:\Users\amanm\Desktop\Python\Python Crash Course\Part 2\MusicBot.py", line 20, in <module>
browser()
NameError: name 'browser' is not defined
它们在同一个目录中: enter image description here
答案 0 :(得分:1)
您需要 modulename.functionname
的格式才能从模块中调用它。在这种情况下,Opening.browser()
。该函数并未直接带入程序,只能通过模块访问。如果您希望能够直接访问它,您可以尝试from Opening import browser
。然后您将能够自行调用 browser()
。这比以下更有效:
def browser(): Opening.browser()
这同样适用于 enter
函数。要将这两个函数作为同一语句的一部分直接导入,请使用逗号分隔函数/变量/对象名称:from Opening import browser, enter
。
即使模块在同一目录中,您也必须以类似方式检索它。如果它在子目录中,您需要在文件名之前使用文件夹名访问它(除非有 __index__.py
文件)。
答案 1 :(得分:0)
你不能那样调用你的函数。以下是操作的简化版本。
b.py
def browser():
return 'you have reached browser'
a.py
import b
print(b.browser())
#another option
#from b import browser
#print(browser())
输出
you have reached browser