كيف يمكنني تنزيل ملف إلى دليل معين؟
سؤال
لقد كنت أحاول مؤخرًا إنشاء برنامج بلغة بايثون يقوم بتنزيل الملفات إلى دليل محدد.أنا أستخدم Ubuntu ولدي هذا حتى الآن
import os
import getpass
import urllib2
y = getpass.getuser()
if not os.access('/home/' + y + '/newdir/', os.F_OK):
print("Making New Directory")
os.mkdir('/home/' + y + '/newdir/')
url = ("http://example.com/Examplefile.ex")
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, '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()
يقوم هذا حاليًا بتنزيل الملف إلى نفس الدليل، كيف يمكنني تغيير الدليل الذي يتم تنزيله إليه؟
إصلاحه رمز جديد:
import os
import getpass
import urllib2
y = getpass.getuser()
if not os.access('/home/' + y + '/newdir/', os.F_OK):
print("Making New Directory")
os.mkdir('/home/' + y + '/newdir/')
os.chdir('/home/'+y+'/newdir/')
url = ("http://example.com/Examplefile.ex")
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, '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()
المحلول
آسف الرجال كنت غبيا ولكن للإجابة على السؤال الذي أضفته giveacodicetagpre.
مباشرة بعد أول بيان سابق: giveacodicetagpre.
نصائح أخرى
قم بتمرير الدليل إلى open()
في اسم الملف.
يستخدم os.path.join لإضافة الدليل إلى file_name
:
from os.path import join
directory = join('/home/', y, '/newdir/')
# You can now use directory everywhere you used to build the directory name
# and then, later in the script:
file_name = url.split('/')[-1]
file_name = join(directory, file_name)
لا تنتمي إلى StackOverflow