mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2024-11-23 20:11:07 +00:00
Added Random Names Generator
This commit is contained in:
parent
28f91e75f5
commit
a04df11006
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
35
Random_Names_Generator/README.md
Normal file
35
Random_Names_Generator/README.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Random Names Generator
|
||||
|
||||
## A simple python script to generate some random names.
|
||||
|
||||
### There are two csv files for 'First Name' and 'Last Name' in text 'CSV_Database_Of_First_And_Last_Names' taken from [here](http://www.quietaffiliate.com/free-first-name-and-last-name-databases-csv-and-sql/)
|
||||
|
||||
# Usage
|
||||
### Step 1
|
||||
Fork this Repo and Clone it to your local machine.
|
||||
```sh
|
||||
$ git clone https://github.com/YOUR_USERNAME/Random_Names_Generator.git
|
||||
$ cd Random_Names_Generator
|
||||
```
|
||||
### Step 2
|
||||
To run the python3 program
|
||||
```sh
|
||||
$ python3 Random_Name_Generator.py
|
||||
```
|
||||
The above only returns only one name.
|
||||
|
||||
|
||||
Add number of names if more than one name is required.
|
||||
```sh
|
||||
$ python3 Random_Name_Generator.py 5
|
||||
```
|
||||
---
|
||||
Tip:-
|
||||
In Linux Machines you can save the files as text using output redirection
|
||||
```sh
|
||||
$ python3 Random_Name_Generator.py 10 >> Random_Names_Generator.txt
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
36
Random_Names_Generator/Random_Name_Generator.py
Normal file
36
Random_Names_Generator/Random_Name_Generator.py
Normal file
|
@ -0,0 +1,36 @@
|
|||
#! /usr/bin/env python3
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import random
|
||||
|
||||
""" Generate a random line from a file without reading the entire file
|
||||
Inspired from: https://stackoverflow.com/a/35579149 """
|
||||
def random_line(file_path):
|
||||
line_num = 0
|
||||
selected_line = ''
|
||||
with file_path.open(mode="r") as fp:
|
||||
while 1:
|
||||
line = fp.readline()
|
||||
if not line: break
|
||||
line_num += 1
|
||||
if random.uniform(0, line_num) < 1:
|
||||
selected_line = line
|
||||
return selected_line.strip()
|
||||
|
||||
""" Output a given number of random names """
|
||||
def random_names(number_of_names = 1):
|
||||
first_names_file = Path("CSV_Database_Of_First_And_Last_Names/CSV_Database_of_First_Names.csv")
|
||||
last_names_file = Path("CSV_Database_Of_First_And_Last_Names/CSV_Database_of_Last_Names.csv")
|
||||
if first_names_file.is_file() and last_names_file.is_file(): # Check if file exists
|
||||
for i in range(number_of_names):
|
||||
random_first_name = random_line(first_names_file)
|
||||
random_last_name = random_line(last_names_file)
|
||||
print(f'{random_first_name} {random_last_name}')
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Accept command line argument for number of names required where default is 1
|
||||
parser = argparse.ArgumentParser(description='Generate Random Names')
|
||||
parser.add_argument('num', nargs='?', type=int, default=1)
|
||||
args = parser.parse_args()
|
||||
random_names(args.num)
|
||||
|
Loading…
Reference in New Issue
Block a user