如何修改Python程序以通过命令行参数传入国家代码并输出对应邮箱
修改后的Python代码(支持命令行传入国家代码)
没问题,我帮你调整代码来实现通过命令行参数传入国家代码的需求,同时修复原代码里的几处小问题:
import pandas as pd import sys def filter_emails_by_country(country_code): # 修复拼写错误:read_CVS -> read_csv(pandas的正确方法名) data = pd.read_csv("filename") # 用字典映射国家对应的允许邮箱域名,后续扩展其他国家更方便 country_domains = { 'US': ['yahoo.com'], 'UK': ['yahoo.com', 'yahoo.co.uk'] } # 校验传入的国家代码是否在支持范围内 if country_code not in country_domains: print(f"错误:不支持的国家代码 {country_code},目前仅支持 US/UK") return print(f"正在筛选 {country_code} 对应的邮箱...") # 遍历所有邮箱地址 for email in data['emailid']: # 拆分邮箱获取域名部分,同时处理格式错误的邮箱 try: domain = email.split('@')[1] except IndexError: print(f"跳过格式无效的邮箱:{email}") continue # 判断域名是否符合当前国家要求 if domain in country_domains[country_code]: print(email) if __name__ == "__main__": # 检查用户是否传入了正确数量的命令行参数 if len(sys.argv) != 2: print("用法:python programname.py <国家代码>,例如:python programname.py 'UK'") sys.exit(1) # 获取命令行参数,转成大写兼容小写输入(比如'uk'也能识别) country = sys.argv[1].upper() filter_emails_by_country(country)
关键修改点说明:
- 替换输入方式:移除了
raw_input(),改用sys.argv[1]读取命令行传入的国家代码,同时增加参数校验,避免用户未传参数或传错参数时程序崩溃 - 修复拼写错误:把原代码里的
pd.read_CVS修正为pandas的正确方法pd.read_csv - 优化逻辑结构:用字典
country_domains存储不同国家对应的允许域名,后续要添加其他国家(比如CA、AU)时,直接在字典里新增条目即可,代码更易维护 - 增加容错处理:添加了对格式无效邮箱的捕获,避免因邮箱格式错误导致程序中断,同时支持大小写不敏感的国家代码输入
- 适配Python 3:改用Python 3的语法(比如
print()加括号、f-string格式化),如果需要兼容Python 2,可以调整print语句和字符串格式化方式
使用示例:
在命令行中运行以下命令即可:
python programname.py 'UK'
内容的提问来源于stack exchange,提问作者Divya Nagandla
相关产品推荐
相关产品推荐

