는 I는 명령 줄 도구를 실행하기 위해 서브 프로세스 모듈로부터 Popen 함수를 사용하고 :subprocess.Popen args 매개 변수의 최대 길이는 무엇입니까?
는subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
I가 사용하고있는 도구는 파일 그 다음 프로세스 목록 걸린다. 어떤 경우에는이 파일 목록이 매우 길 수 있습니다. args 매개 변수가 될 수있는 최대 길이를 찾는 방법이 있습니까?
Traceback (most recent call last):
File "dump_output_sopuids.py", line 68, in <module>
uid_map = create_sopuid_to_path_dict_dcmdump(dicom_files)
File "dump_output_sopuids.py", line 41, in create_sopuid_to_path_dict_dcmdump
dcmdump_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]
File "c:\python26\lib\subprocess.py", line 621, in __init__
errread, errwrite)
File "c:\python26\lib\subprocess.py", line 830, in _execute_child
startupinfo)
WindowsError: [Error 206] The filename or extension is too long
이 최대 길이를 찾을 수있는 일반적인 방법이 있나요 : 많은 수의 파일이 도구에 전달되는으로, 나는 다음과 같은 오류는 무엇입니까? msdn에 대한 다음 문서를 발견했습니다 : Command prompt (Cmd. exe) command-line string limitation하지만 값에 하드 코드를 사용하고 싶지 않습니다. 오히려 런타임에 명령을 여러 호출로 나누기 위해 값을 얻고 싶습니다.
내가 Windows XP에서 파이썬 2.6을 사용하고 64
편집 : 추가 코드 예제
paths = ['file1.dat','file2.dat',...,'fileX.dat']
cmd = ['process_file.exe','+p'] + paths
cmd_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]
paths
목록의 각 실제 항목이 일반적으로 매우 긴 파일 경로 및 때문에 문제가 발생합니다 그들 중 수천 명이 있습니다.
process_file.exe
을 여러 번 호출해도 괜찮습니다. args가 될 수있는 최대 길이를 얻는 일반적인 방법을 찾고 있으므로 각 실행을 위해 얼마나 많은 경로를 보낼지 알고 있습니다.
당신이 인수를 제공 무엇의 예 값을 제공 할 수있다? –
저는 파티에 꽤 늦었습니다. 그러나 PATH 환경 변수가 많은 항목을 추가 한 후에 너무 길어 져서 같은 오류가 발생했다는 것을 추가하고 싶습니다. – RedX