Fun with python requests module

I was reading this part of the pym book and thought that I should change this code a little bit so that it can do some better thing like instead of storing the content in a text file it stores it in a HTML file and it also checks if there is any same named file exists in the directory or not. Here is the code –

import os.path
import requests

def download(url):
    """
    Download the given url and saves it to the current directory
    :arg url: URL of the file to be downloaded.
    """
    req = requests.get(url)
    if req.status_code == 404:
        print('No such file found at %s' % url)
        return
    fileName = url.split('/')[-1].split('.')[0] + '.html'
    print(fileName)
    if os.path.isfile(fileName):
        print('Same file name already exist')
    else:
        with open(fileName, 'wb') as fobj:
            fobj.write(req.content)
        print('Download over')

if __name__ == "__main__":
    url = input("Enter a URL: ")
    download(url)

Above we are getting the content of the content of the url by requests.get(url) method. Then checking if that url is valid or not. If valid then parsing the url by split() method like first we are splitting it by “/” and taking the last value of the list and then splitting it again with “.” and taking the first value of the list. Then checking if there is no same name file exist and if there is no same name file then we are creating a file then writing the content in the file.
Thank you 🙂

Study, day 3

I have started learning python 3 from pym book by Kushal.

Read about following topics and solved problems.

  • Strings
    • Strip the string.Finding text.palindrome checking.Number of words.
  • Function
    • Defining function.Local and Global variable.keyword and keyword only arguments.Docstring.
  • File Handling.
    • Opening and closing a file.Reading data inside a file.Copying data from one file to another.Counting spaces, tabs and new lines in a file.
  • Exceptions
    • Various type of errors.
    • Handling exceptions.
    • Using finally keyword for cleaning.

Learning python3

Photo by Hitesh Choudhary on Unsplash

I started learning python back in 2017 and since then I am still learning it and using it and almost everyday I write some python code. Python is an interpreter based language, you can write the code directly in the interpreter or in a separate file(extension is .py) and run it.

Using the interpreter

Fire up your terminal and type python3. And you will see something like this below code snippet.

$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Now we are going to print “Hello World!” using the interpreter.

>>> print("Hello World!")
Hello World!

Using a source file

Create a file called helloWorld.py and enter the following text:

print("Hello World!")

We can run this file by python3 command.

$ python3 helloWorld.py 
Hello World!

Whitespaces and indentation

Language like c/c++ use pair of curly brackets to divide different identifiers. In the python it uses indentation for that. The whitespaces at the beginning of the line is known as indentation. If you give wrong whitespaces then it will give you errors. Python use 4 whitespaces for a single indentation. Below there is an example.

>>> a = "Aniruddha"
>>>  b = "Basak"
  File "<stdin>", line 1
    b = "Basak"
    ^
IndentationError: unexpected indent

Comments

Comment is a line in python that will start with # and the interpreter of python will just ignores the lines. You can write anything here to describe your code.

>>> # This is a comment
>>> # The next line will multiply two numbers
>>> a = 12 * 34
>>> print(a) # Printing the value of a

If your description is long then it is recommended that you use multiline comments. There is two options for that.

# This is option 1
# Multiline comment
"""
This is option 2
Multiline comment
"""

Modules

The reason why python is loved by so many people is it gives so many modules to work on almost everything you can imagine. Basically modules are python files that contains different functions classes and variable that you can reuse.

>>> import os
>>> print(os.name)
posix

Keywords and Identifiers

Below the following identifiers are main keywords of python. They must exactly types as it is.

False      class      finally    is         return
None       continue   for        lambda     try
True       def        from       nonlocal   while
and        del        global     not        with
as         elif       if         or         yield
assert     else       import     pass
break      except     in         raise

Variables and Datatypes

In python we don’t specify the type of the variable while declaring it.If we declare a = 1 then a will become an integer type and if we define b = "Hii" then b will become an string type variable.

>>> a = "Hi "
>>> b = "how you doing?"
>>> a + b
'Hi how you doing?'

Taking input from keyboard

We can take input from users while executing the program. We can use the input() function given by python for this. Let’s see an example of taking input from user.

number = int(input("Enter number: "))
print(number)

Here is the result –

$ python3 input.py 
Enter number: 25
25

Operators and Expressions

Python language supports the following types of operators.

  • Arithmetic Operators
  • Comparison (Relational) Operators
  • Assignment Operators
  • Logical Operators
  • Bitwise Operators
  • Membership Operators
  • Identity Operators

Arithmetic operator:

It is used to perform common mathematical operations.

>>> a = 2
>>> b = 4
>>> a + b
6
>>> a - b
-2
>>> a * b
8
>>> a / b
0.5
>>> a % b
2
>>> a ** b
16
>>> a // b
0

Comparison operator:

It is used for comparing two values and returns either True or False.

>>> a = 2
>>> b = 4
>>> a == b
False
>>> a != b
True
>>> a > b
False
>>> a < b
True
>>> a >= b
False
>>> a <= b
True

Assignment operator:

This operator is used to assign values to some variable.

>>> x = 5
>>> x += 5
>>> x -= 5
>>> x *= 5
>>> x /= 5

Logical operators:

Logical operators are the and, or, not operators.

>>> x = True
>>> y = False
>>> print('x and y is ', x and y)
x and y is  False
>>> print('x or y is', x or y)
x or y is True
>>> print('not x is', not x)
not x is False

Bitwise operators:

Bitwise operator works on bits and performs bit by bit operation. Assume if a = 60 and b = 13. Now in binary format they will be as follows –

>>> a = 60
>>> b = 30
>>> a & b
28
>>> a | b
62
>>> a ^ b
34
>>> ~a
-61
>>> a >> 2
15
>>> a << 2
240

Membership Operators:

Python’s membership operators test for membership in a sequence, such as strings, lists, or tuples. There are two membership operators as explained below −

a = 'Hello World'
print('H' in a)

Identity Operator:

Identity operators compare the memory locations of two objects. There are two Identity operators explained below −

>>> a = 5
>>> b = 5
>>> c = 10
>>> print(a is not b)
False
>>> print(a is b)
True
>>> print(a is c)
False