코드에 이상한 문자가 나타나는 이유를 모르겠습니다. IOError [Errno 4] Interrupted system call
.IOError 방지 : [Errno 4] 시스템 호출이 끊어졌습니다.
아래의 예는 더미 하나이지만, 그것은 오류 재현 (적어도 내 리눅스 노트북에) 수 :
import subprocess as sp
def dummyfun():
p1 = sp.Popen(['ls','-lah'], stderr=sp.STDOUT, stdout=sp.PIPE, close_fds=True)
p2 = sp.Popen(['grep','.'],stdin=p1.stdout, stdout=sp.PIPE, close_fds=True)
p1.stdout.close()
return p2.stdout
def dummyfun2(fo):
for l in fo:
print l,
def dummyfun3():
fo = dummyfun()
dummyfun2(fo)
fo.close()
이 dummyfun3
를 호출하면 기본적으로 그냥 화면에있는 모든 파일 파크의 목록을 인쇄를 그들의 이름에 점이 있습니다. (제 경우에는 약 100 개의 파일이있는 폴더에 있으며, 모든 파일에는 확장자와 점이 있습니다.)
내가 함수를 dummyfun3()
이라고 부르는 경우 그냥 작동합니다. I 같은 루프를 호출하지만 경우
:
<ipython-input-213-a47ea086386d> in <module>()
1 for i in range(1000):
----> 2 dummyfun3()
3
<ipython-input-205-21366f183162> in dummyfun3()
1 def dummyfun3():
2 fo = dummyfun()
----> 3 dummyfun2(fo)
4 fo.close()
5
<ipython-input-204-1c08d906020b> in dummyfun2(fo)
1 def dummyfun2(fo):
2 for l in fo:
----> 3 print l,
4
IOError: [Errno 4] Interrupted system call
: 코드 중지 몇 번 반복 후
for i in range(1000):
dummyfun3()
다음 오류 메시지를 디스플레이 (일반적 i
5와 15 사이) 왜 그런 오류가 있으며 어떻게 방지 할 수 있습니까?
Works for me':-(Linux (32 또는 64), Python 2.7, 115 개 파일이있는 디렉토리에 있습니다.)'print l '행에 오류가 발생했는지 확인하십시오. ipython 버그와 비슷합니다. . 명령 줄에서 작동합니까? –
당신은 맞습니다 .. ipython 대신 python2.7로 작업하면 문제가 없으므로 내 코드가 정확하다는 의미입니다. – lucacerone
예, 코드는 괜찮습니다. 나쁜 ipython, 또는 다른 가짜 상호 작용에 보이는 몇 가지 버그 때문에 ipython의 최신 개발 버전을 시도해야하며, 여전히 실패하면, 버그로보고, 나는 말하고 싶지만. –