Python中文
首页
教程
问答
标签
搜索
登录
注册
在脚本目录之外时在终端中执行Python脚本
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个Python脚本,可以提示输入文本,搜索在线韩语词典,然后下载MP3音频文件查找找到的单词。我使用脚本帮助我制作带有音频的Anki抽认卡。脚本最初来自<a href="https://www.reddit.com/r/Korean/comments/a0wkq7/tip_mass_download_audio_files_from_naver/" rel="nofollow noreferrer">this post on reddit</a></p> <p>我可以在保存脚本的目录中从终端执行脚本。但是,当我在另一个目录中并通过调用脚本的完整路径来执行脚本时,脚本似乎正在运行,但找不到任何单词或下载任何MP3。当我从不同的目录调用脚本时,我无法理解为什么脚本无法正确执行</p> <p>脚本存储在我的Mac上的下载文件夹中<code>/Users/matt/Downloads</code> 因此,当我运行以下命令时,它可以工作:</p> <pre><code>cd Downloads python3 naver.py </code></pre> <p>但是,当我运行以下命令时,脚本会执行,但不会下载任何MP3:</p> <pre><code>python3 /Users/matt/Downloads/naver.py </code></pre> <p>完整的Python脚本如下所示:</p> <pre><code>import urllib.request, json, codecs, math, time def searchWords(koreanWords): url = ('https://ko.dict.naver.com/api3/koko/search?' + urllib.parse.urlencode({'query': koreanWords}) + '&range=word&page=1') response = urllib.request.urlopen(url) reader = codecs.getreader("utf-8") jsonInfo = json.load(reader(response)) pageCount = jsonInfo["pagerInfo"]["totalPages"] searchData = jsonInfo["searchResultMap"]["searchResultListMap"]["WORD"]["items"] for pageCountInc in range(0, pageCount): if pageCountInc != 0: url = ('https://ko.dict.naver.com/api3/koko/search?' + urllib.parse.urlencode({'query': koreanWords}) + '&range=word&page=' + str(pageCountInc+1)) response = urllib.request.urlopen(url) reader = codecs.getreader("utf-8") jsonInfo = json.load(reader(response)) searchData = jsonInfo["searchResultMap"]["searchResultListMap"]["WORD"]["items"] for z in range (0, len(searchData)): if searchData[z]["handleEntry"] in unchangedWordList: if searchData[z]["searchPhoneticSymbolList"]: if searchData[z]["searchPhoneticSymbolList"][0]["phoneticSymbolPath"] != "": timesDownloaded[unchangedWordList.index(searchData[z]["handleEntry"])] += 1 mp3Link = searchData[z]["searchPhoneticSymbolList"][0]["phoneticSymbolPath"] if mp3Link not in mp3Links: mp3Links.append(mp3Link) urllib.request.urlretrieve(mp3Link, searchData[z]["handleEntry"] + str(timesDownloaded[unchangedWordList.index(searchData[z]["handleEntry"])]) + ".mp3") time.sleep(.3) def parseWords(listOfWords): for x in range(0, math.floor(len(listOfWords)/10)): tempWords = [] for y in range(0, 10): tempWords.append(listOfWords[x*10+y]) print("Searching: " + str(x+1) + "/" + str(math.ceil(len(listOfWords)/10))) searchWords(tempWords) tempWords = [] for y in range(math.floor(len(listOfWords)/10)*10+1, len(listOfWords)): tempWords.append(listOfWords[y]) print("Searching: " + str((math.ceil(len(listOfWords)/10))) + "/" + str(math.ceil(len(listOfWords)/10))) searchWords(tempWords) unfoundWords = [] unchangedWordList = [] timesDownloaded = [] mp3Links = [] wordInputs = unchangedWordList = input('Enter Words: ').split() timesDownloaded = [0] * len(unchangedWordList) parseWords(wordInputs) for z in range(0, len(timesDownloaded)): if(timesDownloaded[z] == 0): unfoundWords.append(unchangedWordList[z]) if unfoundWords: print(",".join(str(x) for x in unfoundWords) + " could not be found.") print("Rerunning individual searches for unfound words.") print(unfoundWords) oldUnfoundWords = unfoundWords unfoundWords = [] for x in range(0, len(oldUnfoundWords)): print("Searching: " + str(x+1) + "/" + str(len(oldUnfoundWords))) searchWords(oldUnfoundWords[x]) for z in range(0, len(timesDownloaded)): if(timesDownloaded[z] == 0): unfoundWords.append(unchangedWordList[z]) if unfoundWords: print(",".join(str(x) for x in unfoundWords) + " could not be found.") </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>原因如下: python文件在当前目录中运行。因此,当您运行这个:<code>python3 /Users/matt/Downloads/naver.py</code>时,它要么运行并将mp3文件保存在当前目录中,要么根本不保存任何内容(如果它没有保存mp3文件的权限)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
3 回答
如何在乒乓球游戏中阻止球
7 回答
如何在乘法和模中不乘空间?
5 回答
如何在乘法和除以2个不同的数字之间进行交换?
6 回答
如何在也是数据一部分的单个字符上拆分大字符串
10 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
8 回答
如何在事件wxWidgets中传递自定义数据
2 回答
如何在事件中使用lambda i=i?
4 回答
如何在事件中心只接收最近的数据
4 回答
如何在事件发生之前保持云函数运行?
2 回答
如何在事件发生后使页面重定向到同一页面
2 回答
如何在事件回调之间保持python生成器的状态
2 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
1 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
6 回答
如何在事件处理程序中访问外部对象?
2 回答
如何在事件循环中将协程打包为正常函数?
9 回答
如何在事件循环之外运行协同程序?
5 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
1 回答
如何在事件文件中只保留一份摘要?
9 回答
如何在事件模板中添加事件
8 回答