Python не сохраняет файлы в папку, отличную от той, где находится файл Python в Ubuntu 11.10 - PullRequest
0 голосов
/ 30 марта 2012

Так что я вытаскиваю JPG из URL.Я могу сохранять файлы изображений, пока они сохраняются в той же папке, в которой находится файл python. Как только я пытаюсь изменить папку (здесь это обозначено как выход), файлы изображений не создаются.Я предполагаю, что это как-то связано с моим выходом, но, кажется, это нормально, когда я печатаю и наблюдаю за ним в консоли.

Кстати, Ubuntu 11.10 OS.Я новичок в Linux и Python, так что это может быть легко.:)

Если бы я должен был напечатать последовательность, взятую из CSV-файла, она бы выглядела так: [['Champ1', 'Subname1', 'imgurl1'], ['Champ2', 'subname2', 'imgurl2 '], [' Champ3 ',' subname3 ',' imgurl3 '] ...]

(это было удалено с веб-сайта)

import csv
from urlparse import urlsplit
from urllib2 import urlopen, build_opener
from urllib import urlretrieve
import webbrowser
import os
import sys


reader = csv.reader(open('champdata.csv', "rb"), delimiter = ",", skipinitialspace=True)


champInfo = []


for champs in reader:
    champInfo.append(champs)


size = len(champInfo)

def GetImages(x, out_folder="/home/sean/Home/workspace/CP/images"):
    b=1
    size = len(champInfo)
    print size

    while b < size:
        temp_imgurls = x.pop(b)
        filename = os.path.basename(temp_imgurls[2])
        print filename
        outpath = os.path.join(out_folder, filename)
        print outpath
        u = urlopen(temp_imgurls[2])
        localFile = open(outpath, 'wb')
        localFile.write(u.read())
        localFile.close()


        b+=1

GetImages(champInfo)

Я понимаю, что это довольно грубо,но это работает, только если я не пытаюсь изменить путь сохранения.

Ответы [ 3 ]

0 голосов
/ 30 марта 2012

def GetImages (x):

b=1
size = len(champInfo)
print size
while b < size:
    temp_imgurls = x.pop(b)
    filename = temp_imgurls[2]
    u = urlopen(temp_imgurls[2])
    localFile = open(filename, 'wb')
    localFile.write(u.read())
    localFile.close()

И этот код будет сохранять файлы в том же каталоге, где находится скрипт.

0 голосов
/ 30 марта 2012

Обновленный ответ:

Я думаю, что ответом на вашу проблему является просто добавление проверки существования выходного каталога и создание его при необходимости. т.е. добавить:

if not os.path.exists(out_folder):
    os.makedirs(out_folder)

к существующему коду.


В общем, вы можете попробовать что-то более похожее на это:

import csv
from urllib2 import urlopen
import os
import sys

default_outfolder = "/home/sean/Home/workspace/CD/images"
# simple arg passing wihtout error checking
out_folder = sys.argv[1] if len(sys.argv) == 2 else default_outfolder

if not os.path.exists(out_folder):
    os.makedirs(out_folder)  # creates out_folder, including any required parent ones
else:
    if not os.path.isdir(out_folder):
        raise RuntimeError('output path must be a directory')

reader = csv.reader(open('champdata.csv', "rb"), delimiter = ",", skipinitialspace=True)

for champs in reader:
    img_url = champs[2]
    filename = os.path.basename(img_url)
    outpath = os.path.join(out_folder, filename)
    print 'Downloading %s to %s' % (img_url, outpath)
    with open(outpath, 'wb') as f:
        u = urlopen(img_url)
        f.write(u.read())

Приведенный выше код работает для champdata.csv вида stuff,more_stuff,http://www.somesite.com.au/path/to/image.png но потребуется адаптировать, если я не понял фактический формат ваших входящих данных.

0 голосов
/ 30 марта 2012

Попробуйте указать полный путь к изображению везде

E: /../ дом / Sean / Главная / рабочее пространство / CD / изображения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...