python - 从 Python 中的文件创建用户帐户的最佳方法?
问题描述
我正在尝试从我在 Python 中上传的文件中批量创建用户帐户。因此,与其一次创建一个用户,我可以提供 X 个用户的列表并快速创建它们。因此,例如,如果我有一个包含以下用户名的文件(newusers.csv),我将如何轻松地做到这一点?
名字,姓氏,用户名。
汤姆猫 tcat11
杰瑞老鼠 Jmouse21
迷你鼠标 Mmouse
以下是我应该创建用户的代码:
def user_account():
userInformation = readFile("newusers.csv")
try:
subprocess.run(['useradd','-p', userInformation[1:]])
except:
print(f"failed to add user.")
sys.exit(1)
解决方案
我不知道您希望在useradd
命令中使用哪些特定选项等,因此我将不予考虑。但是关于方法:这是您可以通过创建 User 类来处理它的一种方法。
import csv
class User:
def __init__(self, firstname, lastname, username):
self.firstname = firstname
self.lastname = lastname
self.username = username
def save(self):
try:
# WHATEVER COMMAND AND OPTIONS YOU ARE LOOKING TO RUN
# USING self.username, ETC. AS ARGS
except:
print("failed to add user")
sys.exit(1) # if you don't want to attempt any of the other users
@staticmethod
def mass_save(users):
for user in users:
user.save()
@staticmethod
def read_users_from_file(file_path):
with open(file_path, "rt") as f:
users = csv.reader(f)
next(users) # Skip header row
return [User(*row) for row in users] # Unpack each userinfo row from csv upon instantiation
if __name__ == "__main__":
users = User.read_users_from_file("users.csv")
User.mass_save(users)
推荐阅读
- google-colaboratory - 在谷歌 colab 中使用 CDSAPI
- java - Spring boot -> 为什么我不需要在服务中捕获我的异常?
- ffmpeg - ffmpeg 我怎么知道使用了什么预设
- javascript - 为什么我的 React 功能组件多次返回?我需要它只运行一次
- node.js - 在 req.login Passport + React + Nodejs 之后等待的所有 Post/Get 请求
- coq - 如何证明一个空列表的子序列是空的?
- mysql - 在 MySQL 中合并两个查询以获得一个结果
- swift - NavigationLink 正在将数组中的错误记录传递给另一个视图
- javascript - 正则表达式或子字符串操作从关键字中删除 URL
- python - 具有顺序的pytorch concat层