数据流重定向-导出训练日志

本文介绍如何使用命令行技巧进行输出重定向,包括正确与错误输出的覆盖和累加方式,以及如何将输出发送到文件或后台执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1>:以覆盖的方法将正确的数据输出到指定的文件或设备上;
1>>:以累加的方法将正确的数据输出到指定的文件或设备上;
2>:以覆盖的方法将错误的数据输出到指定的文件或设备上;
2>>:以累加的方法将错误的数据输出到指定的文件或设备上;
&>log(或log 2>&1):将正确的和错误数据通通写入同一个文件log中;

即:

[root@www~]$ 命令 1> log

将执行命令后的本来输出在屏幕上的正确的数据输出到log文件。
例:

[root@tramac] caffe/example/mnist$ python solve.py 1> log &

最后的“&”表示将命令放入后台执行。也可以不加。

### 如何将 Python 的 `print` 函数输出保存或导出到文件 在 Python 中,可以通过多种方式实现将 `print` 函数的输出保存或导出到文件的功能。以下是几种常见的方法及其具体实现: #### 方法一:通过重定向标准输出流 可以利用 Python 提供的标准库模块 `sys` 来重新定义标准输出流的行为。例如,在以下代码中,创建了一个自定义类来捕获并记录所有的打印输出[^3]。 ```python import sys class Logger(object): def __init__(self, filename="Default.log"): self.terminal = sys.stdout # 原始终端输出对象 sys.stdout = self # 替换 stdout 到当前实例 self.file_log = open(filename, 'w') # 打开日志文件用于写入 def write(self, message): """ 实现写操作 """ self.terminal.write(message) # 同步显示到控制台 self.file_log.write(message) # 记录到文件 def flush(self): """ 清除缓冲区 """ pass def close(self): """ 关闭文件资源 """ if not self.file_log.closed: self.file_log.close() # 使用示例 logger = Logger("./log/output.txt") # 初始化Logger并将输出重定向到指定文件 for i in range(5): print(f"Logging line {i}") # 此处的 print 输出会被同时发送到屏幕和 log 文件 logger.close() # 结束后记得关闭文件句柄 ``` 这种方法的优点在于它能够全局影响程序中的所有 `print()` 调用而无需修改现有逻辑结构。 --- #### 方法二:直接设置 `file` 参数给 `print` 另一种更简单的做法是在调用 `print()` 时显式地为其提供一个可写的文件对象作为参数值传递给关键字参数 `file` 。这样每次执行该语句都会自动追加相应内容至目标文档内[^2]。 ```python with open('example_output.txt', mode='a+', encoding='utf8') as f: print("This is an example.", file=f) ``` 上述例子展示了如何打开名为 `"example_output.txt"` 的文本档,并以附加模式 (`'a+'`) 开启以便于后续添加新资料而不覆盖旧有部分;接着运用内置函数 `print()` 把字符串传送到此档案里头去完成储存动作。 注意这里采用了上下文管理器(`with`)语法糖封装整个过程从而确保即使发生异常也能安全释放外部资源比如关闭已开启过的文件描述符等等... --- #### 方法三:借助第三方库 Pandas 导出复杂数据结构为 Excel 表格 当面对较为复杂的多维数组或者列表字典混合型别的时候单纯依靠基本 IO 操作可能显得力不从心此时引入专门处理此类场景下的工具包就变得尤为重要了比如说著名的数据分析利器——Pandas 可轻松搞定这类需求[^5]. 下面给出一段示范代码片段说明如果想把一些关联关系较强的数据集转换成易于阅读理解以及进一步加工分析使用的电子表格形式该如何着手: ```python import pandas as pd data_dict = { "Student Name": ["Alice", "Bob", "Charlie"], "Score Math": [90, 87, 95], "Score English":[88, 92, 86] } df_students_scores = pd.DataFrame(data=data_dict) # Save dataframe into excel sheet named student_grades.xlsx without row indices. df_students_scores.to_excel("student_grades.xlsx", index=False) ``` 这段脚本首先构建了一组关于学生姓名与其对应两门功课成绩之间映射关系的小规模样本集合随后将其转化为 Pandas 数据框最后一步则是指示框架按照默认配置生成一份新的 Microsoft Office Excel 工作簿存放在工作目录下可供随时查阅编辑. --- #### 方法四:格式化输出为特定样式 (如表格) 除了单纯的文本存储之外有时候我们还希望得到更加美观整齐的结果呈现这就需要用到字符串格式化的技巧配合循环迭代机制共同作用达成目的如下所示[^4]: ```python header_format = "%-*s %*s" item_width = 15; price_width = 8; items_prices = [ ("Apple", "$1"), ("Banana", "$0.5"), ("Cherry", "$2") ] print(header_format % (item_width,"Item",price_width,"Price")) print("-"*len((header_format%(item_width,"X",price_width,"Y")))) for item_name,item_price in items_prices : print("%-*s%*s"%(item_width,item_name,price_width,item_price)) ``` 以上演示了怎样定制头部标签并且逐行填充具体内容最终形成一张简易版的商品清单表单效果显著提升了视觉体验质量同时也方便后期维护调整布局设计风格等细节之处.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值