相关疑难解决方法(0)

使用Popen获取输出彩色文本

我正在使用popen制作一个插件,这个插件使用了一个外部程序,在输出中显示了一些彩色文本.

输出是这样的:

avr-g++ -o .pioenvs\uno\FrameworkArduino\HardwareSerial.o -c -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDUINO=10607 -I.pioenvs\uno\FrameworkArduino -I.pioenvs\uno\FrameworkArduinoVariant .pioenvs\uno\FrameworkArduino\HardwareSerial.cpp    
avr-g++ -o .pioenvs\uno\FrameworkArduino\HardwareSerial0.o -c -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDUINO=10607 -I.pioenvs\uno\FrameworkArduino -I.pioenvs\uno\FrameworkArduinoVariant .pioenvs\uno\FrameworkArduino\HardwareSerial0.cpp
=============================================
Path\file.cpp: in function 'void loop()':
Path\file.cpp:23:2 error: expected ';' before '}' token
}
^
=============================================
Run Code Online (Sandbox Code Playgroud)

所有内部"="都是红色和黄色.

当我在命令控制台中运行命令时,我可以看到完整的输出,但是当我使用Popen时,我只能获得未着色的文本

这就是我使用Popen的方式

process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, cwd=self.cwd, universal_newlines=True, shell=True)
output = process.communicate()

stdout = output[0]
stderr = output[1]

print(stdout)
print(stderr) …
Run Code Online (Sandbox Code Playgroud)

python popen python-2.7 output

6
推荐指数
1
解决办法
3389
查看次数

bash中的“ 1>&2”是什么意思?

在bash脚本中“ 1>&2”是什么意思?

例如,bash脚本的以下行做什么?

echo "$1 is not a directory!" 1>&2
Run Code Online (Sandbox Code Playgroud)

我使用的是Mac OSX。我的bash脚本是:

if [ ! -d $1 ]; then
    echo "$1 is not a directory" 1>&2
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

bash

6
推荐指数
1
解决办法
9265
查看次数

有没有办法配置 sqlplus 将错误输出到 STDERR 而不是 STDOUT?

如果我通过管道传输此脚本:

me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \;
dsadadasda SELECT * FROM some_table;
Run Code Online (Sandbox Code Playgroud)

变成sqlplus这样:

me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string | grep -i unknown
SQL> SP2-0734: unknown command beginning "dsadadasda..." - rest of line ignored.
Run Code Online (Sandbox Code Playgroud)

然后错误进入STDOUT而不是STDERR

me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string 1>/dev/null
me:~/git/my-project$
Run Code Online (Sandbox Code Playgroud)

有什么方法可以配置 …

linux oracle sqlplus

6
推荐指数
1
解决办法
278
查看次数

在控制器内的命令行中执行python - PHP/CodeIgniter

在我的automation.php控制器内,我有以下功能:

public function deploy_test() {

      echo json_encode(system("python --version"));
 }
Run Code Online (Sandbox Code Playgroud)

当用户想要部署测试时,通过单击test网页中的按钮,他将能够完成这样的任务.但是,当我单击test按钮时,我的输出是:

""
Run Code Online (Sandbox Code Playgroud)

同时,当我用命令执行相同的功能时:

public function deploy_test() {

    echo json_encode(system("ls -l"));
}
Run Code Online (Sandbox Code Playgroud)

我越来越:

total 32
drwxr-xr-x. 15 philippe philippe 4096 Mar  4 16:48 application
drwxrwxr-x.  2 philippe philippe 4096 Mar  4 17:28 css
-rw-r--r--.  1 philippe philippe 6357 Jan 30 11:53 index.php
drwxrwxr-x.  2 philippe philippe 4096 Feb 27 15:38 js
-rw-r--r--.  1 philippe philippe 2496 Jan 30 11:53 license.txt
drwxr-xr-x.  8 philippe philippe 4096 Jan …
Run Code Online (Sandbox Code Playgroud)

php python codeigniter

5
推荐指数
1
解决办法
1584
查看次数

将 Angular CLI 构建日志保存到文件

我在这里检查,没有可以传递给 Angular CLI 以将日志保存到文件的选项。我试过这个:

ng build |& tee output.txt
Run Code Online (Sandbox Code Playgroud)

问题是生成的文件使我的 Atom 编辑器崩溃,并且在 Geany 中它不可读,因为像 [BS]、[ESC] 这样的字符(它们的删除弄乱了格式并且文件仍然不可读)。

各位大侠,能分享一下你们的技巧吗?

angular2-cli angular

5
推荐指数
1
解决办法
4665
查看次数

将命令输出的错误消息存储到shell变量中

我试图将复制命令的错误消息存储到变量中.但它没有发生

Unix命令

log=`cp log.txt`
cp: missing destination file operand after `log.txt'
Try `cp --help' for more information.

echo $log

<nothing displayed>
Run Code Online (Sandbox Code Playgroud)

我想将上面的错误消息存储到变量中,以便我可以随时回应它

unix bash shell

4
推荐指数
1
解决办法
1913
查看次数

如何模拟HTTP请求?

如何模拟 HTTP 请求。例如,我想模拟向我的数据库中插入数据的请求,以检查我的程序的安全性和可靠性。有什么好的工具吗?

php networking jquery http request

2
推荐指数
1
解决办法
9142
查看次数

为什么我不能将输出从sed重定向到文件

我正在尝试运行以下命令

./someprogram | tee /dev/tty | sed 's/^.\{2\}//' > output_file
Run Code Online (Sandbox Code Playgroud)

但是当我去检查时,文件总是空白的.如果我> output_file从命令的末尾删除,我能够看到sed的输出没有任何问题.

有没有办法可以将此命令中sed的输出重定向到文件?

bash debian

2
推荐指数
1
解决办法
2840
查看次数

打开的含义(STDERR,“&gt;&STDOUT”)

我在一个示例脚本中找到了它,然后我从Google搜索并找到了以下单词,

请注意,您不能简单地将STDERR打开为Perl程序中STDOUT的副本,并避免调用Shell进行重定向。这不起作用:

open(STDERR, ">&STDOUT");
Run Code Online (Sandbox Code Playgroud)

之所以失败,是因为open()使STDERR转到open()时STDOUT所在的位置。然后,反引号使STDOUT转到字符串,但不要更改STDERR(仍将其转到旧的STDOUT)。

现在我很困惑。到底是什么意思open(STDERR, ">&STDOUT");

perl io-redirection

2
推荐指数
1
解决办法
133
查看次数

用于使用可选输入文件运行 C++ 的 vim 映射

我正在配置 vimrc 文件以进行 C++ 竞争性编程。

autocmd filetype cpp nnoremap <F5> :w <CR> 
                                   :!g++ -o %:r % <CR> :!./%:r < input.txt <CR>
Run Code Online (Sandbox Code Playgroud)

以下映射是当我按 F5 时,它保存、编译(%:r 是不带 .cpp 的文件名),并使用 input.txt 文件运行。

但是,并非每个 cpp 文件都有 input.txt,因此我只想仅当当前目录中存在 input.txt 时才通过管道传输 input.txt。

总而言之,在映射过程中检查文件的最佳方法是什么?

c++ vim

2
推荐指数
1
解决办法
1348
查看次数