How can write this in a better way?
Question:
Do you have any idea to write this more cleanly ? I am using a module which have several function on it but the syntax is the same like you can see.
import browser_cookie3
site = "SOME WEBSITE"
cookies = []
try:
cookies.append(str(browser_cookie3.chrome(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.edge(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.firefox(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.brave(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.opera(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.vivaldi(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.chromium(domain_name=site)))
except:
pass
Answers:
If you create a list of the browser names as strings you can then use getattr
to get the function from the module dynamically:
import browser_cookie3
site = "SOME WEBSITE"
cookies = []
browsers = [
"chrome",
"edge",
"firefox",
"brave",
"opera",
"vivaldi",
"chromium",
]
for browser in browsers:
try:
cookies.append(str(getattr(browser_cookie3, browser)(domain_name=site)))
except:
pass
Note that you should specify the exact error to suppress: except AttributeError:
for example. If you catch all errors like you are, it will make it difficult to debug later if there’s an unexpected error
Do you have any idea to write this more cleanly ? I am using a module which have several function on it but the syntax is the same like you can see.
import browser_cookie3
site = "SOME WEBSITE"
cookies = []
try:
cookies.append(str(browser_cookie3.chrome(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.edge(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.firefox(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.brave(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.opera(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.vivaldi(domain_name=site)))
except:
pass
try:
cookies.append(str(browser_cookie3.chromium(domain_name=site)))
except:
pass
If you create a list of the browser names as strings you can then use getattr
to get the function from the module dynamically:
import browser_cookie3
site = "SOME WEBSITE"
cookies = []
browsers = [
"chrome",
"edge",
"firefox",
"brave",
"opera",
"vivaldi",
"chromium",
]
for browser in browsers:
try:
cookies.append(str(getattr(browser_cookie3, browser)(domain_name=site)))
except:
pass
Note that you should specify the exact error to suppress: except AttributeError:
for example. If you catch all errors like you are, it will make it difficult to debug later if there’s an unexpected error