Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Argument is URL or path

Tags:

python

argv

What is the standard practice in Python when I have a command-line application taking one argument which is

URL to a web page

or

path to a HTML file somewhere on disk

(only one)

is sufficient the code?

if "http://" in sys.argv[1]:
  print "URL"
else:
  print "path to file"
like image 398
xralf Avatar asked Oct 21 '11 13:10

xralf


3 Answers

import urlparse

def is_url(url):
    return urlparse.urlparse(url).scheme != ""
is_url(sys.argv[1])
like image 160
jassinm Avatar answered Nov 11 '22 17:11

jassinm


Depends on what the program must do. If it just prints whether it got a URL, sys.argv[1].startswith('http://') might do. If you must actually use the URL for something useful, do

from urllib2 import urlopen

try:
    f = urlopen(sys.argv[1])
except ValueError:  # invalid URL
    f = open(sys.argv[1])
like image 20
Fred Foo Avatar answered Nov 11 '22 17:11

Fred Foo


Larsmans might work, but it doesn't check whether the user actually specified an argument or not.

import urllib
import sys

try:
    arg = sys.argv[1]
except IndexError:
    print "Usage: "+sys.argv[0]+" file/URL"
    sys.exit(1)

try:
    site = urllib.urlopen(arg)
except ValueError:
    file = open(arg)
like image 1
Griffin Avatar answered Nov 11 '22 19:11

Griffin