2016-07-20 4 views
0

존재하지 않을 수도있는 파일을 열어서 쓰려고합니다. 저는 Windows 7을 사용 중이며 Python을 사용하고 있습니다. 파일을 찾을 수 없기 때문에 IOError가 발생합니다. FNAME 당신이 출력 아래에 표시되는 내용 인으로, 나는 os.path.join(saveDir, fname)로 newFname을 만들어 내 코드의 다른 부분에서IOError with Python write하지만 디렉토리가 존재합니다.

dirBool = os.path.exists(saveDir) 
print dirBool 
if not dirBool: 
    os.mkdir(saveDir) 

if saveDir == os.path.dirname(newFname): 
    print 'They are the same' 
else: 
    print 'They are not the same' 

print saveDir 
print newFname 
fileSpace = open(newFname, "w") 

: 여기 내 파일을 저장하려면 코드입니다. 내가 얻는 결과는 다음과 같습니다.

True 
They are the same 
//itsofs04.itap.purdue.edu/bio_mousevision/Data/skissing/WT vs Fragile X/FXS Paper/16.02.9 4 WT 4 FX VEH vs DGX/16.02.9 CC#028849 Group1B ET#387 pre t/Pupilometry Data_1.2 
//itsofs04.itap.purdue.edu/bio_mousevision/Data/skissing/WT vs Fragile X/FXS Paper/16.02.9 4 WT 4 FX VEH vs DGX/16.02.9 CC#028849 Group1B ET#387 pre t/Pupilometry Data_1.2\010 G-1-G-2-G Drifting 0.0625s Interval_2016-02-09_18-08-04_units_010 Video_pupilometry_1.2_x_y_Area.hdf5 

이러한 이름은 긴 이름이지만 알고 있어야합니다. 디렉토리가 존재하고 새로운 파일이 저장 될 디렉토리와 동일하다는 것을 알 수 있습니다. 내가 할 오류 :

IOError: [Errno 2] No such file or directory: u'//itsofs04.itap.purdue.edu/bio_mousevision/Data/skissing/WT vs Fragile X/FXS Paper/16.02.9 4 WT 4 FX VEH vs DGX/16.02.9 CC#028849 Group1B ET#387 pre t/Pupilometry Data_1.2\\010 G-1-G-2-G Drifting 0.0625s Interval_2016-02-09_18-08-04_units_010 Video_pupilometry_1.2_x_y_Area.hdf5' 

것들 지금까지 시도했다 :

  1. 변경 앞뒤로 슬래시를 슬래시
  2. 변경만을 슬래시의 일부 및/또는 일부 백 슬래시
  3. 캐스트를 newFname에서 str로 입력하십시오.
  4. newFname이 호출되는 디렉토리에 가까운 파일을 제거하십시오.

내가 할 일이 무엇인지 생각할 수 없으며, 왜 내가 처음에 그 오류를 던지 리라고 생각하지 않습니다.

+0

전체 파일 이름이 유니 코드로되어 있는데, 그 이유는 무엇입니까? 테스트의 디렉토리 이름도 유니 코드로되어 있습니까? – cdarke

+0

경로 이름은 어떻게 받습니까? – Ares

+0

솔직히 디렉토리 이름이 유니 코드인지 여부는 알 수 없습니다. 필자는 Tkinter를 사용하여 파일 이름을 뽑았 고 os.path를 사용하여 이름을 나눴으며 출력 내용을 지정하지 않았습니다. 게다가, 나는 파일 이름을 문자열로 형변환 해 보았는데 작동하지 않았다. –

답변

0

Windows에서 네트워크 드라이브를 사용하는 경우 드라이브를 드라이브 문자에 매핑해야합니다. 내 컴퓨터> 네트워크 드라이브 연결을 마우스 오른쪽 버튼으로 클릭하면됩니다. 그런 다음 open() 경로의 매핑 된 드라이브 문자를 사용하십시오.