我在重定向python应用程序的输出时遇到了这个奇怪的问题.我从源代码运行bitmessage ,它向控制台打印了相当多的东西.
我尝试使用我编写的应用程序过滤掉一些行.当我将输出重定向到文件时python.exe src\bitmessagemain.py>file.txt它工作正常,一切都发送到文本文件.当我将输出管道python.exe src\bitmessagemain.py | someapp.exe传输到另一个应用程序时,所有"print"语句似乎都被忽略了.它们不会重定向,也不会通过管道传输到其他应用程序.
使用"more"和"type CON"等系统内部命令时,重定向甚至不起作用
有人知道如何解决这个问题吗?
我有以下代码:
int main()
{
printf("hello world");
while(1);
}
Run Code Online (Sandbox Code Playgroud)
打印你好世界吗?如果是,为什么?如果不是,为什么?我在linux机器上使用gcc来编译代码.
我正在Haskell 的 Hackerrank 中处理字符串压缩问题,但一直停留在 IO 上。我试图明确删除引号。
compress :: [Char] -> [Char]
compress = ...
main :: IO ()
main = do
input <- getLine
let result = compress input
print $ filter (/='"') result
Run Code Online (Sandbox Code Playgroud)
代码编译并返回正确的响应,尽管用引号括起来。
Compiler Message
Wrong Answer
Input (stdin)
abcaaabbb
Your Output (stdout)
"abca3b3"
Expected Output
abca3b3
Run Code Online (Sandbox Code Playgroud) 我正在尝试分析以下代码:
FILE* out=stdout;
printf("\nEnter value: \n");
out=out-1;
char ch;
while(ch!=EOF){
ch=fgetc(out);
printf("\nValue printed: %c\n",ch);
}
fclose(out);
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,会观察到以下输出:
Enter value:
IWantToC
Value printed: I
Value printed: W
Value printed: a
Value printed: n
Value printed: t
Value printed: T
Value printed: o
Value printed: C
Value printed:
Run Code Online (Sandbox Code Playgroud)
我知道 fgetc 一次从 out(指向 stdout)获取一个字符的值并打印它直到到达文件末尾。
out=out-1 在这里做什么?如果 out 最初指向 stdout 文件的开头,那么它不应该也打印“Enter value:”中的字符。或者,如果它指向 stdout 文件的末尾,那么它不应该只从末尾打印一个字符吗?另外,为什么它首先需要用户输入?是因为getc吗?
抱歉问了很多问题。如果有人澄清这些疑问,这对我理解 C 将会非常有帮助。我在这里看到了相关问题,但没有找到任何特别解决我的疑问的问题。
这是一个最小工作示例(MWE),保存为mwe.py:
import sys
def f(n):
print("Testing print()...")
sys.stdout.write("Calculating f({})...".format(n))
Run Code Online (Sandbox Code Playgroud)
从命令行运行时,我得不到任何输出:
username@hostname:~/mydir$ python mwe.py 'f(99)'
username@hostname:~/mydir$
Run Code Online (Sandbox Code Playgroud)
从内部运行时python
我得到输出(删除了一些信息):
username@hostname:~/mydir$ python
Python 3.5.4 (default, DATE, HH:MM:SS)
[GCC X.X.X Compatible Apple LLVM X.X.X (clang-X.X.X)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from mwe import f
>>> f(99)
Testing print()...
Calculating f(99)...
>>>
Run Code Online (Sandbox Code Playgroud)
为什么这些输出语句在命令行内python但不在命令行中?