我在重定向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);
}
打印你好世界吗?如果是,为什么?如果不是,为什么?我在linux机器上使用gcc来编译代码.
我正在Haskell 的 Hackerrank 中处理字符串压缩问题,但一直停留在 IO 上。我试图明确删除引号。
compress :: [Char] -> [Char]
compress = ...
main :: IO ()
main = do
    input <- getLine
    let result = compress input
    print $ filter (/='"') result 
代码编译并返回正确的响应,尽管用引号括起来。
Compiler Message
Wrong Answer
Input (stdin)
abcaaabbb
Your Output (stdout)
"abca3b3"
Expected Output
abca3b3
我正在尝试分析以下代码:
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);
当我运行此代码时,会观察到以下输出:
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:
我知道 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))
从命令行运行时,我得不到任何输出:
username@hostname:~/mydir$ python mwe.py 'f(99)'
username@hostname:~/mydir$ 
从内部运行时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)...
>>>
为什么这些输出语句在命令行内python但不在命令行中?