[英]Autocomplete command line arguments from a list in a file
假設我有一個名為script.py
的程序,它允許使用命令行選項-i
,這需要一個額外的關鍵字參數,這樣我就可以調用
python script.py -i foo
現在假設我的工作目錄中有一個名為tags.txt
的文件,其中包含一個字符串列表。 現在我希望shell在根據tags.txt
給出的字符串列表調用腳本時自動完成-i
之后的任何tags.txt
。 這個想法是在該文件中存儲-i
一些常見輸入參數,以減少鍵入錯誤並確保更快的輸入。 這是純粹的Python解決方案嗎?
在bash中,auto Completer可以運行命令或bash函數來動態生成自動完成列表。 假設您的腳本名為foo。 一種選擇是創建一個名為foo_completer的腳本。 您可以在.bash_profile中將其注冊為:
complete -C foo_completer foo
現在,只要您使用foo命令選中自動完成,就會從bash調用foo_completer。 但是使用-C並不是創建動態完成符的唯一方法。 以下是一些幫助您入門的鏈接。
我見過的最復雜的完成者之一是用python編寫的aws cli自動完成器 。
因為你正在使用python檢查python argcomplete項目。
這是另一個例子
最接近我能想到的(再次同意一個章節所提出的另一個觀點,這更像是一個shell問題/答案而不是Python),而不是tags.txt是一個文件,創建它作為一個目錄,sym鏈接到你想要的文件。 但是,要獲得自動完成功能,您需要包含目錄名稱。
雖然,它是更多與命令行相關的問題和問題的解決方案,而不是基於Python的,但是可以通過在命令行和Python腳本上指定file_name
作為可選參數,使用Python實現此目的的另一種方法將從file_name
參數中指定的文件中讀取參數並更新參數變量。 如果未定義file_name
參數,則期望通過命令行指定其他參數,您可能必須驗證是否獲得了所有參數的值。
建議使用命令行(Bash / Shell)定向解決方案,例如使用complete
命令或任何其他類似工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.