2017-09-09 4 views
0

ファイルにユーザー名を書き込むバッチファイルを作成しました。それは完璧に動作してnet userをクリーンアップし、それは次のようになりますように、ファイルにユーザー名を書き込みます。Python2.7で文字列を書式化してnetコマンドの結果を

Administrator Michael Guest
Pianoman Billy George

が、私はそこになりますどのように多くのユーザ名を知らないので、私の質問は:どのように私ができます私が扱う名前の長さが分からないので、未定義の名前の間にこの空白をクリーンアップして、そこにいくつのスペースがあるか分からない。

私のpythonプログラムは、ファイルからこれらの名前を読み込み、それらをリストにすることになっています。私はちょうど.split( "")を使用することを計画していたので、理想的に誰かがそれぞれの名前の間の1つのスペースに差をつける方法を提案することができました。私は既に.formatメソッドを見ていましたが、それはタスクにはあてはまらないようです。これをバッチでフォーマットするには、やや読みやすい方法(疑いの余地があります)がある場合は、私も開いています。

ところで、私は単に出力をdir /B C:\Usersからリダイレクトすると考えましたが、これは状況に応じて動作しません。 sep引数なし

+0

ユーザー名は、それらのいずれかのスペースを持っていない場合、あなたは 'FOR/F'を使用していない問題を抱えているはずですコマンドを使用して、 'NET USERS'コマンドの出力を解析します。 – Squashman

+0

PyWin32がインストールされていると、 'users、total、resume = win32net.NetUserEnum(None、0、resume)'というユーザのリストを取得できます。'resume = 0'で始まり、呼び出しが' resume'を0として返すまで繰り返す。各 'users'リストは" name "キーを持つdictです。これらの項目を、 'user_list + = [u ['name'] for users in']のような完全なリストにマージすることができます。 – eryksun

答えて

1

使用.split()

string.split(s[, sep[, maxsplit]]) 

戻り文字列sの単語のリスト。オプションの第2の 引数がsepでない場合、またはNoneの場合は、 の空白文字(スペース、タブ、改行、 リターン、formfeed)の任意の文字列で区切られます。 2番目の引き数sepが存在し、 Noneでない場合は、単語区切り文字として使用する文字列を指定します。 返されたリストには、文字列内の区切り文字が重複していない の数より1つ多い項目があります。 maxsplitが指定されている場合、最大でmaxsplitの分割数が発生し、 文字列の残りの部分が リストの最終要素として返されます(リストの要素数は最大でmaxsplit+1になります)。 maxsplitが指定されていない場合、または-1の場合は、 の分割数に制限はありません(可能なすべての分割が行われます)。

空の文字列での分割の動作は、 sepという値に依存します。 sepが指定されていないか、Noneと指定されている場合、結果は となります。 sepが任意の文字列として指定されている場合、結果は で、空の文字列である1つの要素を含むリストになります。

>>> x='Administrator   CLIENT1     Guest' 
>>> x.split(' ') 
['Administrator', '', '', '', '', '', '', '', '', '', '', '', 'CLIENT1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','Guest'] 
>>> x.split() 
['Administrator', 'CLIENT1', 'Guest'] 
>>> 

別のアプローチ:

>>> import string 
>>> x='Administrator   CLIENT1     Guest' 
>>> string.split(x,' ') 
['Administrator', '', '', '', '', '', '', '', '', '', '', '', 'CLIENT1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','Guest'] 
>>> string.split(x) 
['Administrator', 'CLIENT1', 'Guest'] 
>>> 
関連する問題