簡體   English   中英

從文件列表中自動完成命令行參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM