[解决方法] 如何将命令行的输出打印到txt文件中

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/clksjx/article/details/84843320

在运行程序的时候,如果想将信息输出至txt文件中,可以使用下述几种方法:

  1. 如果是在本地运行程序,想运行程序后,继续在terminal做其他的事情,可以在terminal上进行下述操作:

    python -u test.py > log.txt 2>&1 &    # 将输出信息写到log.txt中
    

    其中,
    - 最后一个“&”表示后台运行程序
    - “python”表示执行python代码
    - “-u”表示不启用缓存,实时输出打印信息到日志文件(如果不加-u,则会导致日志文件不会实时刷新代码中的print函数的信息)
    - “test.py”表示要执行的python的源代码文件
    - “>”表示将打印信息重定向到日志文件
    - “log.txt”表示输出的日志文件
    - “2>&1”表示将标准错误输出转变为标准输出,可以将错误信息也输出到日志文件中(0-> stdin, 1->stdout, 2->stderr)

  2. 如果是在远程服务器上运行的程序,将代码跑起来之后直接关闭ssh,将程序放入服务器后台执行,可以使用下述命令:

    nohup python -u test.py &    # 将程序放入后台运行,并将输出信息写到nohup.output中
    

    其中,“nohup” 表示程序不被挂起,可以在ssh关闭后继续运行。执行完上面一句后,执行exit退出ssh即可。下次登入服务器时,执行cat nohup.output即可查看程序的输出信息。

  3. 查看log信息

    cat log.txt  # 查看截止目前所有的日志内容
    tail log.txt  # 查看截止目前,最后10行日志
    tail -f log.txt  # 从最后10行开始滚动输出,准实时刷新。若想停止刷新,ctrl+c即可
    tail -n 100 -f log.txt   # 从最后100行开始滚动输出
    
  4. 虽然也可以直接在python文件中定义将输出写入至文件中,但是感觉比较麻烦:

    f = open('log.txt', 'w')
    print('Hello world', file=f)
    f.close()
    

感谢下述链接的博主: 1和2的来源

猜你喜欢

转载自blog.csdn.net/clksjx/article/details/84843320
今日推荐