Anubis13 Δημοσ. 20 Μαρτίου 2015 Δημοσ. 20 Μαρτίου 2015 Καλησπέρα, έχω ένα url σε python(www.server.com/select=q?) και παίρνω κάποια arguments από το χρήστη και θέλω να φτιάξω το τελικό url, έχω βρει αυτο http://stackoverflow.com/questions/2506379/add-params-to-given-url-in-python γενικά οι απαντήσεις με καλύπτουνε αλλά επειδή το hardcoded είναι πάντα εύκολο ειδικα αυτο ειναι ωραιο params = {'lang':'en','tag':'python'} Αλλα εγω πως μπορω να το υλοποιησω παίρνοντας parameters python example.py id=123 cat=2
nucleus Δημοσ. 20 Μαρτίου 2015 Δημοσ. 20 Μαρτίου 2015 https://docs.python.org/2/library/urllib.html urllib.urlencode(query[, doseq]) Convert a mapping object or a sequence of two-element tuples to a “percent-encoded” string, suitable to pass to urlopen() above as the optional data argument. This is useful to pass a dictionary of form fields to a POST request. The resulting string is a series of key=value pairs separated by '&' characters, where both key and value are quoted using quote_plus() above. When a sequence of two-element tuples is used as the query argument, the first element of each tuple is a key and the second is a value. The value element in itself can be a sequence and in that case, if the optional parameter doseq is evaluates to True, individual key=value pairs separated by '&' are generated for each element of the value sequence for the key. The order of parameters in the encoded string will match the order of parameter tuples in the sequence. The urlparse module provides the functions parse_qs() and parse_qsl() which are used to parse query strings into Python data structures. Πρέπει να φτιάξεις μια ακολουθία απο tuples με τα ονόματα και τις τιμές λογικά αυτό μπορεί να γίνει δυναμικά με παραμέτρους περισσότερες πληροφορίες στο documentation της python για την έκδοση που χρησιμοποιείς. Δεν χρησιμοποιώ python οπότε δεν γνωρίζω πως ακριβώς το κάνεις.
Anubis13 Δημοσ. 20 Μαρτίου 2015 Μέλος Δημοσ. 20 Μαρτίου 2015 Θεωρητικά μου κάνει και αυτό: http://stackoverflow.com/questions/24489980/using-command-line-arguments-to-launch-url-in-system-web-browser Aν εχει κανεις αλλος καποια ιδεα μας την λεει
pmav99 Δημοσ. 23 Μαρτίου 2015 Δημοσ. 23 Μαρτίου 2015 Νομίζω ότι ρωτάς το λάθος πράγμα, ή ίσως πιο σωστά, ρωτάς μόνο το ένα από τα δύο πράγματα που σε απασχολούν. 1. Για να διαβάσεις τα command line arguments χρησιμοποιησε τη βιβλιοθήκη που αναφέρει το δεύτερο link που έδωσες (argparse) 2. Για να περάσεις query parameters χρησιμοποιήσε αυτό https://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qs(ή το αντίστοιχο API της Python 2)
iceblade Δημοσ. 24 Μαρτίου 2015 Δημοσ. 24 Μαρτίου 2015 Για οποιοδήποτε πρόγραμμα με command line interface (CLI) μακράν ότι καλύτερο έχω βρεί: docopt "pip install docopt" Γράφεις ένα σωστό docstring για την εφαρμογή σου και το CLI σου έρχεται δώρο.
Anubis13 Δημοσ. 24 Μαρτίου 2015 Μέλος Δημοσ. 24 Μαρτίου 2015 Καταρχας ευχαριστώ για τις απαντήσεις σας. Ειμαι limited σε συγκεκριμενη python version και συγκεκριμενες βιβλιοθηκες. Αντι για argparse χρησιμοποιώ το optparse(μικρό το κακο αυτη την στιγμή), διαβάζω κανονικά τα options και χτίζω το query string μου. Oπότε μετα μου αρκεί να κάνω encode το string μου σε url και να ανοιξω ενα connection. H αλλη λυση ειναι να κανω conn = urllib.urlopen(url, params) url έχω οκ αλλά τα params πρέπει να ειναι της μορφης(2o post) http://stackoverflow.com/questions/13288930/how-to-pass-parameter-to-url-with-python-urlopen Είναι δυνατό να φτιάξω έτσι τα parameters ετσι δεχομενος τα μεσω command line?
pmav99 Δημοσ. 24 Μαρτίου 2015 Δημοσ. 24 Μαρτίου 2015 Ναι, είναι δυνατόν να κάνει ό,τι θέλεις, αλλά ανέβασε κώδικα και παραδείγματα.
Anubis13 Δημοσ. 24 Μαρτίου 2015 Μέλος Δημοσ. 24 Μαρτίου 2015 parser.add_option("-H", "--host", dest="host", help="Search a specific host") parser.add_option("-p", "--program", dest="program", help="Search for a specific program") options, arguments = parser.parse_args() option_dict = vars(options) str ='' for keys, values in option_dict.items(): if values is not None: str += keys +':'+ values + ' ' final = urlparse.urljoin(url, str) Οπου url ειναι το link πριν το query string.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα