Pyt*_*tor 1 python download urllib2
所以,
我一直在编写一个Downloader,每次运行它时都会说:
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'
Run Code Online (Sandbox Code Playgroud)
我现在,您可能会说,创建一个文件,但我希望脚本创建该文件.
那么,有人能告诉我要修复什么吗?这是代码:
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()
Run Code Online (Sandbox Code Playgroud)
Lan*_*aru 10
问题是python没有意识到你使用%USERNAME%来引用一个环境变量,所以python从字面上解释它.你必须告诉python这是一个环境变量,通过这样做:
更换
f = open('c:\\users\\%USERNAME%\\AppData\\Roaming\\.minecraft\\mods\\CreeperCraft.zip', 'wb+')
Run Code Online (Sandbox Code Playgroud)
同
import os
f = open(os.path.expandvars('c:\\users\\%USERNAME%\\AppData\\Roaming\\.minecraft\\mods\\CreeperCraft.zip'), 'wb+')
Run Code Online (Sandbox Code Playgroud)
问题是%USERNAME%默认情况下不会扩展.os.path.expandvars在你的道路上使用.
fp = path.expandvars(r'c:\\users\%USERNAME%\AppData\Roaming\.minecraft\mods\CreeperCraft.zip')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |