2010-12-14 4 views
1

subprocess 모듈을 사용하여 파일을 탐색기에서 두 번 클릭하여 열려고합니다. 어떻게해야합니까? 라는 오류가 발생합니다Windows에서 더블 클릭에 해당하는 파이썬 보조 프로세스 모듈

subprocess.call("C:/myfile.csv", shell=True) 

:

명령의 구문이 올바르지 입니다

나는 다음 줄을 시도했다.
'C : \'는 내부 또는 외부 명령 작동 가능 프로그램 또는 배치 파일로 인식되지 않습니다.

subprocess을 사용하여 더블 클릭을 에뮬레이트하는 방법은 무엇입니까? 기본적으로 나는

+0

''subprocess.call (r'C : \ myfile.csv ', shell = True)'해야한다고 생각합니다. (확실하지 않고'os.startfile'이 더 깨끗합니다). –

+0

@Chris : 실제로'shell = True'를 사용했습니다. 질문에 그것을 포함하는 것을 잊었습니다. 'shell = True'를 사용하면 위에서 언급 한 오류가 발생합니다. – Kit

+0

나는 Chris가 자신의 경로에 백 슬래시가 포함 된 원시 문자열을 사용 했으므로 자신이 사용하지 않았고 차이가 클 수 있다는 사실을 놓쳤다 고 생각합니다. – martineau

답변

7
os.startfile(r'C:\myfile.csv') 

엑셀 2007에서 CSV 파일을 열고 자 (.는 Win32는 Mac의 'open filename'와 프로세스를 실행;. 리눅스/freedesktop -에 - 일반, 'xdg-open filename')

+0

+1. 'subprocess.call'은 무언가를 실행 파일로 실행하려고 시도합니다. CSV 파일은 실행 파일이 아닙니다. 그것은 하나의 데이터입니다. 각 플랫폼에는 "어떤 종류의 파일인지 파악하고 해당 응용 프로그램에 공급"하기위한 자체 유틸리티 응용 프로그램이 있습니다. 이는 실제로 수행하려는 작업입니다. –

1

나는 생각한다 문제는 UNIX 백 슬래시 대신 유닉스 스타일의 슬래시/경로 구분 기호를 사용하고 있다는 것입니다. Windows가 /myfile.csv을 프로그램 C:에 대한 인수로 해석하는 것처럼 보입니다. 따라서이 메시지가 나타납니다.

그러나 문제를 해결 한 경우 나는 단지 C:\myfile.csv이 프로그램이 아니라는 것을 알게 될 것이라고 생각합니다.

0

나는 이것이 다소 늦다는 것을 알고 있지만, 파이썬 2.x (3에 대해서는 확실하지 않음)에서 Popen을 참조하여 subprocess 모듈을 사용해야한다고 알고 있습니다. 다음은 코드입니다.

import subprocess 
subprocess.Popen(r'explorer /select, "C:\"') 

기본적으로 파일을 연 다음 기본 프로그램에서 엽니 다.