Portfoleo project: Algorythm for file updates in Python
Algorithm for file updates in Python
Project description
[Describe the scenario in your own words.]
Open the file that contains the allow list
import_file = "allow_list.txt"
# Assign `remove_list` to a list of IP addresses that are no longer allowed to access restricted information.
remove_list = ["192.168.97.225", "192.168.158.170", "192.168.201.40", "192.168.58.57"]
# First line of `with` statement
with open(import_file, "r") as file:
Read the file contents
with open(import_file, "r") as file:
# Use `.read()` to read the imported file and store it in a variable named `ip_addresses`
ip_addr = file.read()
Convert the string into a list
with open(import_file, "r") as file:
# Use `.read()` to read the imported file and store it in a variable named `ip_addresses`
ip_addresses = file.read()
# Use `.split()` to convert `ip_addresses` from a string to a list
ip_addresses = ip_addresses.split("\n")
# Display `ip_addresses`
print(ip_addresses)
Iterate through the remove list
for element in ip_addresses:
# Display `element` in every iteration
print(element)
Remove IP addresses that are on the remove list
for element in ip_addresses:
# Build conditional statement
# If current element is in `remove_list`,
if element in remove_list:
# then current element should be removed from `ip_addresses`
ip_addresses.remove(element)
# add to ips renmoved list
# Display `ip_addresses`
print(ip_addresses)
Update the file with the revised list of IP addresses
# Assign `import_file` to the name of the file
import_file = "allow_list.txt"
# Assign `remove_list` to a list of IP addresses that are no longer allowed to access restricted information.
remove_list = ["192.168.97.225", "192.168.158.170", "192.168.201.40", "192.168.58.57"]
# Build `with` statement to read in the initial contents of the file
with open(import_file, "r") as file:
# Use `.read()` to read the imported file and store it in a variable named `ip_addresses`
ip_addresses = file.read()
# Use `.split()` to convert `ip_addresses` from a string to a list
ip_addresses = ip_addresses.split()
# Build iterative statement
# Name loop variable `element`
# Loop through `ip_addresses`
for element in ip_addresses:
# Build conditional statement
# If current element is in `remove_list`,
if element in remove_list:
# then current element should be removed from `ip_addresses`
ip_addresses.remove(element)
# Convert `ip_addresses` back to a string so that it can be written into the text file
ip_addresses = " ".join(ip_addresses)
# Build `with` statement to rewrite the original file
with open(import_file, "w") as file:
# Rewrite the file, replacing its contents with `ip_addresses`
file.write(ip_addresses)
Final
create the allow-list as a file
# Assign `import_file` to the name of the file
import_file = "allow_list.txt"
allow_list = """ip_address
192.168.25.60
192.168.205.12
192.168.97.225
192.168.6.9
192.168.52.90
192.168.158.170
192.168.90.124
192.168.186.176
192.168.133.188
192.168.203.198
192.168.201.40
192.168.218.219
192.168.52.37
192.168.156.224
192.168.60.153
192.168.58.57
192.168.69.116"""
# Assign `remove_list` to a list of IP addresses that are no longer allowed to access restricted information.
remove_list = ["192.168.97.225", "192.168.158.170", "192.168.201.40", "192.168.58.57"]
# Build `with` statement to read in the initial contents of the file
with open(import_file, "r") as file:
# Use `.read()` to read the imported file and store it in a variable named `ip_addresses`
ip_addr = file.read()
temp_file = "task_3_remove_list.txt"
import_file = temp_file
with open(import_file, "w") as import_file:
import_file.write(ip_addr)
# Display `ip_addresses`
print(ip_addr)
modify and prune the allow-list
# Assign `import_file` to the name of the file
import_file = "allow_list.txt"
# Assign `remove_list` to a list of IP addresses that are no longer allowed to access restricted information.
remove_list = ["192.168.97.225", "192.168.158.170", "192.168.201.40", "192.168.58.57"]
# Build `with` statement to read in the initial contents of the file
with open(import_file, "r") as file:
# Use `.read()` to read the imported file and store it in a variable named `ip_addresses`
ip_addresses = file.read()
# Use `.split()` to convert `ip_addresses` from a string to a list
ip_addresses = ip_addresses.split()
# Build iterative statement
# Name loop variable `element`
# Loop through `ip_addresses`
for element in ip_addresses:
# Build conditional statement
# If current element is in `remove_list`,
if element in remove_list:
# then current element should be removed from `ip_addresses`
ip_addresses.remove(element)
# Convert `ip_addresses` back to a string so that it can be written into the text file
ip_addresses = " ".join(ip_addresses)
# Build `with` statement to rewrite the original file
with open(import_file, "w") as file:
# Rewrite the file, replacing its contents with `ip_addresses`
file.write(ip_addresses)
# Build `with` statement to read in the updated file
with open(import_file, "r") as file:
# Read in the updated file and store the contents in `text`
text = file.read()
# Display the contents of `text`
print(text)
Summary
this script automates management of an ip allowlist. the allowlist is in a file, and the script reads and writes to file.