我想把它写成只有一行:
fprintf(stdout, "RCPT TO: <%s>\r\n", argv[argc-1]);
fprintf(sockfd, "RCPT TO: <%s>\r\n", argv[argc-1]);
Run Code Online (Sandbox Code Playgroud)
所以我想将相同的字符串发送到stdout和我的开放套接字.我怎样才能做到这一点?
在搞乱Python时,我决定制作一个随机符号生成器,它会向CL输出连续的字符流.
这很简单,看起来像这样:
from random import choice
import sys
char_ranges = [[33,48],[58,65],[91,97],[123,127]]
chars = []
for r in char_ranges:
for i in range(r[0],r[1]):
chars.append(chr(i))
while True:
print choice(chars),
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,,打印一个字符后使用会导致在stdout.flush()调用后添加一个空格.
我通常会解决这个问题的方法是通过连接字符串并打印它,但在这种情况下,我想要一个连续的输出流,因此连接将无济于事.
那么如何在没有空格的Python中获得连续的输出流?
我编写了以下代码来逐字符地打印段落,间隔为0.3秒.但是当我编译并运行它时,它会打印出句子中的所有内容.为什么纳秒功能不起作用?
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i = 0;
struct timespec t1, t2;
t1.tv_sec = 0;
t1.tv_nsec = 300000000L;
char story[] = {"I want to print this story / letter by letter on the screen./"};
while(story[i] != '\0') {
if(story[i] == '/')
sleep(1);
else
printf("%c", story[i]);
nanosleep(&t1, &t2);
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 好的,所以我读了我的文件并打印得很好,但现在我正在尝试将数据输出到一个新文件,但它无法正常工作.任何人都可以在这看到错误吗?
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
$| = 1;
open MYFILE, "+<", 'source_file.txt' or die $!;
my $linenum = 1;
while (<MYFILE>) {
print $linenum++;
print ": $_\n";
}
open OUT, "+>", 'output_report.txt' or die $!;
while (<OUT>) {
print "SUMMARY SECTION:\n\n";
print "# of total lines in the file - '2006'\n\n";
}
Run Code Online (Sandbox Code Playgroud)
新文件'output_report'已创建,但是当我打开新的txt文件时,这是我的不幸,空白.另外,如果我使用STDOUT,是否必须使用STDERR?谢谢!
当我运行myTest.jar时,它在STDOUT中输出大量信息(不在文件中),我试图读取/搜索该文件以获取特定字符串作为变量放入我的bash脚本中.
java标准输出:
line 1 info............
line 2 info...........
....
...
Successful (either 'Successful' or 'Failed')
Run Code Online (Sandbox Code Playgroud)
如何在bash中搜索stdout中的最后一行或('Successful'或'Failed')而不将stdout重定向到文件?
提前致谢
我正在编写一个程序来读取另一个程序的输出,逐行读取并将其放入列表中.
#!/usr/bin/python
import subprocess
def RECEIVE(COMMAND):
PROCESS = subprocess.Popen(COMMAND, stdout=subprocess.PIPE)
LINES = iter(PROCESS.stdout.readline, "")
for LINE in LINES:
RECARR = LINE.split()
print RECARR[14]
RECEIVE(["receivetest","-f=/dev/pcan32"])
Run Code Online (Sandbox Code Playgroud)
receivetest程序的输出是:
19327481.401 receivetest: m s 0x0000000663 8 2f 00 42 02 00 e4 8a 8a
19327481.860 receivetest: m s 0x000000069e 8 00 1f 5e 28 34 83 59 1a
Run Code Online (Sandbox Code Playgroud)
它是一个不断的消息流.拆分时,列表的范围是14,因为在拆分后,为了确保,我使用了:
print len(RECARR)
Run Code Online (Sandbox Code Playgroud)
这给了我一个输出14.
但每当我尝试打印最后一个元素时:
print RECARR[14]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
file "./cancheck.py", line 10, in RECEIVE
print RECARR[14]
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
这是由于列表顶部打印的一些错误文本引起的,所以我需要一些方法来确保程序只读取以
1234567.123
/^(.......\.\d{1,3}) …Run Code Online (Sandbox Code Playgroud) 我的预提交钩子压缩/编译css/js文件.当发生错误时,我只是echo用来输出错误然后exit 1.但是,写入控制台的文本是WHITE,因此在发生错误时不容易看到.
是否有另一种方法可以写入控制台(errOut?),使文本变为RED?
我可以写一个文件并从中读取:
echo a > b.txt
read c < b.txt
Run Code Online (Sandbox Code Playgroud)
Bash是否能够隐含地这样做?就像是:
<turn on implicit mode>
echo a
read c
<turn off implicit mode>
Run Code Online (Sandbox Code Playgroud)
当"隐式模式"打开时,所有stdout都转到b.txt,所有stdin都从b.txt读取.我试过了:
exec > b.txt
Run Code Online (Sandbox Code Playgroud)
但它只影响标准输出.
我正在用python 2.7编写
我有以下代码:
a = 0
b = 0
while True:
a += 1
b += 1
print str(a)
print str(b)
Run Code Online (Sandbox Code Playgroud)
输出如下:
1
1
2
2
3
3
4
....
Run Code Online (Sandbox Code Playgroud)
并希望用这两行冲洗stdout.flush().代码看起来像这样,但它不起作用..
import sys
a = 0
b = 0
while True:
a += 1
b += 1
sys.stdout.write(str(a)+"\n")
sys.stdout.write(str(b)+"\r")
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
这会产生如下输出:
1 #1
2 #1 ->#2
3 #2 ->#3
4 #3 ->#4
...
Run Code Online (Sandbox Code Playgroud)
我知道这是因为\r只跳到第二行的开头,然后从下一个打印开始..
如何将光标设置为第1行的开头而不是第2行?
所以它只刷新2行:
n #1 ->#2 ->#3 ->#4 ->#.....
n #1 ->#2 ->#3 …Run Code Online (Sandbox Code Playgroud) 试图学习lisp(我猜emacs一起).我想知道如何清除输出并更换它.可以在LISP repl或emacs缓冲区中.
类似于python中的以下内容.
def go(r):
for i in range(r):
sys.stdout.write("\rDoing %i" % i)
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)