2017-09-09 11 views
0

사용자 이름을 파일에 쓰는 배치 파일을 만들었습니다. 그것은 완벽하게 작동하고 net user를 정리하고 같이 할 수 있도록 파일에 사용자 이름을 쓴다 :Python2.7에서 문자열 형식으로 net 명령의 결과로

Administrator Michael Guest
Pianoman Billy George

는 내가 거기에 얼마나 많은 사용자 이름 모르는 그래서 내 질문은 : 어떻게 내가 할 수있는 이름의 길이를 알지 못하기 때문에 이름의 미확인 숫자 사이에있는이 공백을 정리하십시오. 따라서 처리 할 공간의 수를 알 수 없습니다.

파이썬 프로그램은 파일에서이 이름을 읽고이를 목록으로 변환합니다. 나는 .split ("")을 사용하는 것을 계획하고 있었기 때문에 누군가가 각 이름 사이에 한 칸씩 차이를내는 방법을 제안 할 수 있었다. 나는 .format 메서드를 이미 살펴 봤는데, 그 일을하는 것처럼 보이지 않는다. 또한 일괄 적으로 형식을 지정하는 다소 읽기 쉬운 방법 (의심스러운)이있는 경우 공개됩니다.

BTW : 단순히 출력을 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의 단어의 목록을 표시합니다. 선택적인 두 번째 인수 인 sep이 없거나 None 인 경우 단어는 공백 문자 (공백, 탭, 개행 문자, 반환, formfeed)의 임의의 문자열 으로 구분됩니다. 두 번째 인수 sep이 있고 None이 아닌 경우 단어 구분 기호로 사용할 문자열을 지정합니다. 반환 된 목록에는 문자열의 분리 기호가 겹치지 않는 숫자보다 하나 많은 항목이 있습니다. maxsplit이 주어지면 최대 maxsplit 개의 분할 수가 발생하고 문자열의 나머지 부분이 목록의 최종 요소로 반환됩니다. 따라서 목록에는 최대로 maxsplit+1 개의 요소가 있습니다. maxsplit이 지정되지 않았거나 -1 인 경우 개의 분할 수에 제한이 없습니다 (가능한 모든 분할이 이루어짐).

빈 문자열에서의 분할 동작은 sep 값에 따라 다릅니다. sep이 지정되지 않았거나 None으로 지정된 경우 결과는 빈 목록입니다. sep이 문자열로 지정된 경우 결과는 빈 문자열 인 요소가 하나 포함 된 목록입니다.

:

>>> 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'] 
>>>