7
votes

wget: comment puis-je spécifier à la fois --Directory-préfixe et --Output-Document

Lorsque j'utilise soit le -p ou -o seul avec wget , tout fonctionne comme annoncé. xxx

. xxx

Cependant, combinant les deux causes wget pour ignorer -p . xxx

J'ai défini une variable pour le répertoire (généré par le dernier morceau de l'URL) et le nom de fichier (généré par une boucle de comptage) telle que http://www.google.com/aaa/bbb/ccc rendements fichier = / nom de fichier ou, pour l'élément 1, /ccc/000.jpg

Lorsque vous remplacez cela dans le code:
popen (['wget', '-o', fichier, theimg], stdout = pipe, starr = stdout)

wget échoue silencieusement (sur chaque itération de la boucle).

Lorsque je active le débogage -d et la journalisation -A log.log , chaque itération imprime
sortie de débogage créé par wget 1.13.4 sur Darwin10.8.0.

Lorsque je supprimai le fichier -O et , L'opération se déroule normalement.

Ma question est la suivante: Y a-t-il un moyen de
A) Spécifiez les deux -p et -o dans wget (préféré) ou de
B) Insérez une chaîne sur -o contenant / -Caractéristiques qui ne la cause pas d'échouer?

Toute aide serait appréciée.


0 commentaires

3 Réponses :


1
votes

Vous devriez simplement passer dir / 000.jpg à -O de wget : xxx

Il n'est pas complètement clair de votre question si vous faites déjà quelque chose de similaire à celui-ci, mais si vous étiez et si vous étiez toujours échoué, je peux penser à deux raisons:

  • l'argument à -O contient un / , rendant wget échoue car il n'a pas la permission de créer au hasard Répertoires dans / (root).

  • Le répertoire que vous raconte wget d'écrire n'existe pas. Vous pouvez vous assurer qu'il existe d'abord en la créant d'abord en utilisant os.mkdir dans la bibliothèque de standard Python.

    Vous pouvez également essayer de supprimer les arguments stdout = et starr = à partir de l'appel populaire afin que vous puissiez voir les erreurs directement, ou imprimez-les à l'aide de Python.


2 commentaires

Quand j'essaie de passer "Dir / 000.jpg" à "-O", wget renvoie "aucun tel répertoire." Cependant, -p créera toujours le répertoire si aucun ne sera trouvé. Je pourrait implémenter Os.mkdir pour cela, mais je cherchais une solution plus élégante ... Merci pour votre contribution, cela m'a donné quelques idées que je n'avais pas envisagées.


@Joshwittington, la solution que vous recherchez n'est tout simplement pas possible. wget ignore -p si -o est passé. Personnellement, je ne vois rien d'inélégant à propos d'utiliser OS.MKDIR . Bonne chance.



6
votes

Documentation de wget.download (..): xxx pré>

Utilisez l'appel suivant pour télécharger le fichier sur un répertoire spécifique (déjà existant) avec le nom de fichier personnalisé: p>

urllib.urlretrieve(url, path_to_output_file)


0 commentaires

1
votes

Cette ligne de code de @jaydev fonctionne réellement brillamment:

wget.download (URL, chemin_to_output_file)


0 commentaires