我正在使用python和我的魔杖運行一個程序,將打開用戶指定的文件。但問題是,如果用戶沒有指定確切的文件名,那麼它會給出錯誤。如果用戶想要打開「99999-file-name.mp3」 並且他已經鍵入「filename.mp3」,那麼程序如何打開最接近指定文件的文件?如何打開最接近指定文件的文件python
0
A
回答
2
要回答這個問題,您需要先定義「最接近」,因爲在計算時這可能意味着非常不同的事情。如果你想比較字符串並找到最相似的,那麼一個好辦法就是檢查編輯距離。這裏有Python庫,即https://pypi.python.org/pypi/editdistance。
你給它兩個字符串,它告訴你你必須改變一個字符串來獲得另一個字符串。根據文件:
>>> import editdistance
>>> editdistance.eval('banana', 'bahama')
2L
PS。不能不提,我認爲這是一個壞主意。如果您想打開打開的文件並且程序開始打開隨機文件,那麼要麼您最終要覆蓋一個不會被覆蓋的文件,要麼嘗試處理無法在您的文件中處理的文件打算的方式。我會推薦使用一個文件選擇框,例如你可以很容易地使用tKinter(即使tKinter是癌症)。
3
首先得到一個文件列表中特定文件夾
然後使用difflib.get_close_matches像這樣:
difflib.get_close_matches(user_specified_file, list_of_files)
找到「好」的比賽。
NB:考慮把一個提供小cutoff
即0.1通過@tobias_k的建議,以確保你做你得到一個比賽總是爲0.6方式默認截止有時什麼也沒有將是一個「門當戶對」的用戶什麼進入。
同樣,如果您只需要獲取一個文件名,還可以傳入可選參數n=1
以獲得最接近的匹配,因爲如果您不指定它,您將獲得3個最佳匹配。
+0
也許通過'cutoff = somesmallnumber'來獲得_any_匹配也是有用的,即使它不是非常相似,而不是完全不匹配。 –
相關問題
- 1. AppleScript打開「打開最近」文件
- 2. 添加到「打開最近的文件」
- 3. 在emacs中打開最近的文件
- 4. 在tcsh中打開最近的文件
- 5. 如何打開最近添加到Swing菜單中的文件?
- 6. Excel VBA:如何打開最近的excel文件
- 7. VBA:如何在文件夾中打開最近的兩個excel文件
- 8. python打開最新的excel文件
- 9. 如何使用命令提示符bat文件打開最近修改或最近創建的文件
- 10. 如何使打開最近DO-文件列出更長
- 11. ConfigurationManager.OpenExeConfiguration - 指定要打開的文件
- 12. org.apache.poi.openxml4j.exceptions.InvalidOperationException:無法打開指定的文件:
- 13. org.apache.poi.openxml4j.exceptions.InvalidOperationException:無法打開指定的文件
- 14. 如何在python上打開特定的文本文件?
- 15. 如何接近-hd文件
- 16. 如何直接在python中打開文本文件?
- 17. 指定如何使用PHP打開特定的文件類型
- 18. 如何打開文件中的文件?
- 19. 在Qt中打開指定文件夾
- 20. 打開文件用戶指定
- 21. 如何在打開新文件時打開文件(打開文件)?
- 22. 文件打開指針
- 23. 使用AppleScript的打開文件指定文件夾下
- 24. python&pyparsing newb:如何打開文件
- 25. 如何jupyter打開文件與Python 2.7
- 26. 如何用python打開3ds文件
- 27. 如何在python中打開.MSG文件
- 28. 如何在Python中打開Excel文件?
- 29. 如何使用python打開json文件?
- 30. 如何在python中打開文件?
你如何定義「最接近」?有很多可以解釋的方法。你的例子認爲一個名字完全包含給定的名字。怎麼樣與錯別字的名字? – GPhilo
這似乎是一個糟糕的X-Y解決方法,爲什麼不確保用戶總是輸入正確的文件或可以匹配的特定模式? –