2012-08-07 3 views
1

그래서,위와 같은 파일이나 디렉토리가 없습니까?

가 나는 다운 코딩 있었고, 나는 그것을 실행할 때마다, 그것은 말한다 :

Traceback (most recent call last): 
    File "C:\Python27\Downloader.py", line 7, in <module> 
    f = open('c:\\users\%USERNAME%\AppData\Roaming\.minecraft\mods\CreeperCraft.zip', 'wb+') 
IOError: [Errno 2] No such file or directory: 'c:\\users\\%USERNAME%\\AppData\\Roaming\\.minecraft\\mods\\CreeperCraft.zip' 

내가 지금, 당신은 아마 파일을 만들고, 말을하려고하지만, 내가 원하는 스크립트를 사용하여 파일을 만듭니다.

그래서 누군가 수정해야 할 부분을 말해 줄 수 있습니까?

import urllib2 
import os 
import shutil 
url = "https://dl.dropbox.com/u/29251693/CreeperCraft.zip" 
file_name = url.split('/')[-1] 
u = urllib2.urlopen(url) 
f = open('c:\\users\%USERNAME%\AppData\Roaming\.minecraft\mods\CreeperCraft.zip', 'wb+') 
meta = u.info() 
file_size = int(meta.getheaders("Content-Length")[0]) 
print "Downloading: %s Bytes: %s" % (file_name, file_size) 
file_size_dl = 0 
block_sz = 8192 
while True: 
    buffer = u.read(block_sz) 
    if not buffer: 
     break 
    file_size_dl += len(buffer) 
    f.write(buffer) 
    status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100./file_size) 
    status = status + chr(8)*(len(status)+1) 
    print status, 
f.close() 
+1

디렉토리가 있는지 확인하고 그렇지 않은 경우 [makedirs] (http://docs.python.org/library/os.html#os.makedirs)를 사용하여 디렉토리를 만드십시오. –

+4

파이썬의'open' 함수는 실제로 윈도우에서 환경 변수를 확장합니까? ('c : \ Users \ % USERNAME % \ AppData \ Roaming \ .minecraft \ mods \ CreeperCraft.zip') – Dirk

+0

당신은'C : \ Users \ % USERNAME \ AppData \ 로밍 '. 또한 원시 문자열 ('r'c : \ ... '')이나 슬래시를 사용하여 경로에서 백 슬래시를 두 번 사용하지 않아도됩니다. – lvc

답변

10

문제는 파이썬 당신이 환경 변수를 참조 % 사용자 이름 %를 사용하고 있는지 인식하지 않는, 그래서 파이썬은 문자 그대로 해석 :이 코드입니다. 이 작업을 수행하여, 그것은 환경 변수의 파이썬에게 있습니다

이 문제는 %USERNAME%는 기본적으로 확장되지 않는 것입니다

import os 
f = open(os.path.expandvars('c:\\users\\%USERNAME%\\AppData\\Roaming\\.minecraft\\mods\\CreeperCraft.zip'), 'wb+') 
+1

또한 [os.path.join] (http://docs.python.org/library/os.path.html#os.path.join)을 사용하여 경로에 가입하십시오. –

+0

확장 프로그램 도움말 주셔서 감사합니다. – Lanaru

+0

다행히 도울 수 있습니다. :-) –

8

f = open('c:\\users\\%USERNAME%\\AppData\\Roaming\\.minecraft\\mods\\CreeperCraft.zip', 'wb+') 

를 교체합니다. 경로에 os.path.expandvars을 사용하십시오.

fp = path.expandvars(r'c:\\users\%USERNAME%\AppData\Roaming\.minecraft\mods\CreeperCraft.zip') 
0

내 방법을 확인하는 것이었다의 AppData 폴더 "해제 숨겨진"그럼 그냥 다른 파일 것, 즉 파이썬 때까지 cmd를 라인에서의 AppData를 볼 수 없기 때문에 일반적으로 파이썬을 통해 액세스, Windows 탐색기에서 당신이 "숨기기 해제"를하면 일반 디렉토리로 액세스 할 수 있습니다.

관련 문제