GVKun编程网logo

子脚本将Python输出输出到子流程中的控制台(python输出子字符串)

15

在本文中,我们将详细介绍子脚本将Python输出输出到子流程中的控制台的各个方面,并为您提供关于python输出子字符串的相关解答,同时,我们也将为您带来关于C#控制台的输入和输出-Console类-

在本文中,我们将详细介绍子脚本将Python输出输出到子流程中的控制台的各个方面,并为您提供关于python输出子字符串的相关解答,同时,我们也将为您带来关于C#控制台的输入和输出-Console类-输出到控制台、linux – Python脚本输出到控制台,即使它是在后台运行、Node.js的python子脚本在完成时输出,而不是实时、Pycharm Python 控制台输出与终端 python shell 输出的有用知识。

本文目录一览:

子脚本将Python输出输出到子流程中的控制台(python输出子字符串)

子脚本将Python输出输出到子流程中的控制台(python输出子字符串)

在我的父脚本中,我执行以下操作:

fout=open(outfile,"w")ferr = open(errfile,"w")subprocess.call("1.py",stdout=fout,stderr=ferr,shell=True)

1.py脚本中,我希望大多数日志消息都进入日志文件,但是我希望根据打印条件在控制台上打印一些消息:

print "Hello World"

但是它正在打印到outfile,我也想在控制台上打印

sys.__stdout__.write("Hello World");

但这aslso不起作用。任何帮助,将不胜感激!

答案1

小编典典

如果将stdout,stderr重定向,则可以尝试直接打印到控制台:

try: # Windows    from msvcrt import putwch    def print_to_console(message):        for c in message:            putwch(c)        # newline        putwch(''\r'')         putwch(''\n'')except ImportError: # Unix    import os    fd = os.open(''/dev/tty'', os.O_WRONLY | os.O_NOCTTY)    tty = os.fdopen(fd, ''w'', 1)    del fd    def print_to_console(message, *, _file=tty):        print(message, file=_file)    del tty

例:

print_to_console("Hello TTY!")# -> Hello TTY!

C#控制台的输入和输出-Console类-输出到控制台

C#控制台的输入和输出-Console类-输出到控制台

C# 控制台程序一般使用 .NET Framework Console 类提供的输入/输出服务。我们多次用到Console.WriteLine方法,我们再学习一些其他的方法。

输出到控制台

输出到控制台就是把数据输出到控制台并显示出来, .Net框架提供了Console类实现这个任务,具体方式有以下几种:

Console.WriteLine();
Console.Write();
Console.WriteLine("输出的值");
Console.Write("输出的值");
Console.WriteLine("输出的格式字符串",变量列表);
Console.Write("输出的格式字符串",变量列表);

Console.WriteLine()方法是将要输出的字符串与换行控制字符一起输出,当次语句执行完毕时,光标会移到目前输出字符串的下一行。
Console.Write()方法光标会停在输出字符串的最后一个字符后,不会移动到下一行,其余的用法与Console.WriteLine()一样。

Console.WriteLine();和Console.Write();的唯一区别就是前者换行,后者不换行。其余用法全部相同。

输出格式字符串

输出格式字符串代码如下:

Console.WriteLine("我的好朋友有{0},{1},{2}和{3}",string[0],string[1],string[2],string[3],);

这种方式中包含两个参数:“格式字符串”和变量列表。
"我的好朋友有{0},{2}和{3}"就是格式字符串,{0},{2},{3}叫做占位符,代表后边依次排列的变量列表,0对应第1个变量,1对应第2个变量,依次类推,完成输出。

在要输出变量值的位置使用占位符{n}来占位,然后用','号来增加变量。n从0开始计数,如果要输出3个变量,那么最后一个n的值应该为2。

int year = 2008;
string str = "今年是";
Console.WriteLine(" {0} {1}年。",str,year);输出应如下所示:
今年是2008年。

 

linux – Python脚本输出到控制台,即使它是在后台运行

linux – Python脚本输出到控制台,即使它是在后台运行

我在后台运行python脚本,但为什么它仍然打印到控制台,即使用管道传输到文件?

我尝试了以下命令:

python script.py &
python script.py > output.txt &

我尝试了一个简单的脚本:

print "hello world"

python script.py &

它仍然打印到控制台.

python script.py > output.txt &

按预期工作,不打印到控制台.

最佳答案
可能它是在stderr上输出的.试试这个:

python script.py > output.txt 2>&1 &

或者看起来您可能已经启动了仍在运行的后台任务:

python script.py &

键入fg将其置于前台,然后使用Ctrl-C将其终止.

Node.js的python子脚本在完成时输出,而不是实时

Node.js的python子脚本在完成时输出,而不是实时

我是node.js和socket.io的新手,我正在尝试编写一个基于 python输出更新网页的小服务器.

最终这将用于温度传感器,所以现在我有一个虚拟脚本,每隔几秒打印一次温度值:

Thermostat.py

import random,time
for x in range(10):
    print(str(random.randint(23,28))+" C")
    time.sleep(random.uniform(0.4,5))

这是服务器的缩减版本:

Index.js

var sys   = require('sys'),spawn = require('child_process').spawn,thermostat = spawn('python',["thermostat.py"]),app = require('express')(),http = require('http').Server(app),io = require('socket.io')(http);

thermostat.stdout.on('data',function (output) { 
    var temp = String(output);
    console.log(temp);
    io.sockets.emit('temp-update',{ data: temp});
}); 

app.get('/',function(req,res){
    res.sendFile(__dirname + '/index.html');
    });

最后是网页:

的index.html

<!doctype html>
<html>
    <head>
        <title>Live temperature</title>
        <link rel="stylesheet" type="text/css" href="styles.css">
    </head>
    <body>
    <div id="liveTemp">Loading...</div>

    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        var socket = io();
        socket.on('temp-update',function (msg) {
        $('#liveTemp').html(msg.data)
    });
    </script>

    </body>
</html>

问题是nodejs似乎一次收到所有温度值,而不是以随机间隔获得10个温度值,我在脚本完成后得到一个长字符串中的所有值:

解决方法

你需要在python中禁用输出缓冲.这可以通过多种方式完成,包括:

>设置PYTHONUNBUFFERED环境变量
>将-u开关传递给python可执行文件
>在每次写入(或在您的情况下为print())之后调用sys.stdout.flush()到stdout
>对于Python 3.3,您可以将flush = true传递给print():print(‘Hello World!’,flush = True)

另外,在你的节点代码中,(即使你在你的python代码中有一个睡眠而你现在正在刷新stdout)你真的不应该假设你的’data’处理程序中的thermostat.stdout输出总是只有一行.

Pycharm Python 控制台输出与终端 python shell 输出

Pycharm Python 控制台输出与终端 python shell 输出

如何解决Pycharm Python 控制台输出与终端 python shell 输出?

我有以下代码:

lang = list("Python"); lang[:-4]

当我通过 python shell 在终端中运行它时,它会按照预期输出 ["P","y"]。但是在 Pycharm Python 控制台中,它什么也不打印。我发现了 this 问题,它使用带有 flush=Truesys.stdout.flush() 的打印语句。就我而言,它们都不起作用。我可以在不同的行上运行它,但我想知道的是原因。为什么它在 Pycharm 中什么也不打印?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于子脚本将Python输出输出到子流程中的控制台python输出子字符串的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于C#控制台的输入和输出-Console类-输出到控制台、linux – Python脚本输出到控制台,即使它是在后台运行、Node.js的python子脚本在完成时输出,而不是实时、Pycharm Python 控制台输出与终端 python shell 输出的相关知识,请在本站寻找。

本文标签: