使用Python批量登录Linux服务器执行命令并导出Excel时遇报错
问题解决:xlsxwriter写入Excel报错AttributeError
报错原因
你代码里的xlsxwriter.Workbook("%s.xlsx"%ls[3],"w")写法错误:xlsxwriter.Workbook的第二个参数要求传入配置选项字典,而不是文件打开模式字符串(比如"w")。代码把字符串当成选项字典调用get方法,才触发了'str' object has no attribute 'get'错误。xlsxwriter默认会创建新文件,无需手动指定"w"。
修正后的完整代码
import xlsxwriter # 用with语句自动管理文件,避免手动关闭的疏漏 with open("creds.csv", "r") as cred: for line in cred.readlines(): # 这里保留你获取/etc/passwd内容的逻辑 users = ... # 将users按行分割,避免逐个字符写入 user_lines = users.splitlines() if isinstance(users, str) else users # 初始化Workbook,去掉多余的"w"参数 workbook = xlsxwriter.Workbook(f"{ls[3]}.xlsx") worksheet = workbook.add_worksheet() # 可选:写入表头 worksheet.write(0, 0, "/etc/passwd 内容") row = 1 col = 0 # 逐行写入服务器返回的内容 for line in user_lines: worksheet.write(row, col, line) row += 1 # 必须关闭Workbook才能完成文件写入,否则Excel会损坏 workbook.close()
关键注意事项
- 确认
ls[3]是已定义的有效变量(比如从cred.csv每行解析出的服务器标识,用来命名Excel文件)。 - 不要用
"".join(users)把多行内容拼成单字符串,否则循环写入时会逐个字符拆分,导致每行只有一个字符。 - 必须调用
workbook.close(),否则生成的Excel文件会无法正常打开。
内容的提问来源于stack exchange,提问作者Mukesh Yadav
相关产品推荐
相关产品推荐

