草庐IT

python - 从文件或 STDIN 读取

我编写了一个命令行实用程序,它使用getopt来解析命令行上给出的参数。我还希望文件名是一个可选参数,例如它在其他实用程序中,如grep、cut等。所以,我希望它具有以下用法tool-dcharacter-finteger[filename]如何实现以下功能?如果给出了文件名,则从文件中读取。如果没有给出文件名,则从STDIN读取。 最佳答案 fileinput模块可以做你想做的事——假设非选项参数在args那么:importfileinputforlineinfileinput.input(args):printline如果arg

python - 如何打开文件夹中的每个文件

我有一个python脚本parse.py,它在脚本中打开一个文件,比如file1,然后做一些事情可能会打印出字符总数。filename='file1'f=open(filename,'r')content=f.read()printfilename,len(content)现在,我正在使用stdout将结果定向到我的输出文件-输出pythonparse.py>>output但是,我不想手动逐个文件处理这个文件,有没有办法自动处理每个文件?喜欢ls|awk'{print}'|pythonparse.py>>output那么问题是如何从标准中读取文件名?还是已经有一些内置函数可以轻松完成l

python - 如何打开文件夹中的每个文件

我有一个python脚本parse.py,它在脚本中打开一个文件,比如file1,然后做一些事情可能会打印出字符总数。filename='file1'f=open(filename,'r')content=f.read()printfilename,len(content)现在,我正在使用stdout将结果定向到我的输出文件-输出pythonparse.py>>output但是,我不想手动逐个文件处理这个文件,有没有办法自动处理每个文件?喜欢ls|awk'{print}'|pythonparse.py>>output那么问题是如何从标准中读取文件名?还是已经有一些内置函数可以轻松完成l

java - 逐行读取 STDIN 的最快方法?

我正在寻找最省时的方式来逐行读取STDIN。第一行是要测试的条件数。以下所有行都是最多100000个字符的条件(字符串)。我已经尝试了以下(加上4次90000个字符的结果:带有while循环的扫描器(7255毫秒)Scannersc=newScanner(System.in);intnumberOfLines=Integer.parseInt(sc.nextLine());longstart=0;inti=1;while(i结果:扫描仪需要3228毫秒,而扫描仪需要2264毫秒,而扫描仪需要1309毫秒扫描仪需要454毫秒,而带有for循环的扫描器(7078毫秒)Scannersc=n

java - 逐行读取 STDIN 的最快方法?

我正在寻找最省时的方式来逐行读取STDIN。第一行是要测试的条件数。以下所有行都是最多100000个字符的条件(字符串)。我已经尝试了以下(加上4次90000个字符的结果:带有while循环的扫描器(7255毫秒)Scannersc=newScanner(System.in);intnumberOfLines=Integer.parseInt(sc.nextLine());longstart=0;inti=1;while(i结果:扫描仪需要3228毫秒,而扫描仪需要2264毫秒,而扫描仪需要1309毫秒扫描仪需要454毫秒,而带有for循环的扫描器(7078毫秒)Scannersc=n

java - 在 stdin 上阻塞使 Java 进程需要多 350 毫秒才能退出

我有一个Java程序如下:publicclassfoo{publicstaticvoidmain(String[]args)throwsException{Threadt=newThread(newRunnable(){publicvoidrun(){try{System.in.read();}catch(Exceptione){}}});t.setDaemon(true);t.start();Thread.sleep(10);//Makesureithitstheread()callt.interrupt();t.stop();System.exit(0);}}使用timejavaf

java - 在 stdin 上阻塞使 Java 进程需要多 350 毫秒才能退出

我有一个Java程序如下:publicclassfoo{publicstaticvoidmain(String[]args)throwsException{Threadt=newThread(newRunnable(){publicvoidrun(){try{System.in.read();}catch(Exceptione){}}});t.setDaemon(true);t.start();Thread.sleep(10);//Makesureithitstheread()callt.interrupt();t.stop();System.exit(0);}}使用timejavaf

java - 在 Java 6 中使用继承的 stdin/stdout/stderr 启动进程

如果我通过Java的ProcessBuilder启动一个进程类,我可以完全访问该进程的标准输入、标准输出和标准错误流,如JavaInputStreams和OutputStreams。但是,我找不到将这些流无缝连接到System.in、System.out和System.err的方法。可以使用redirectErrorStream()来获取单个InputStream包含子进程的标准输出和标准错误,然后循环并通过我的标准发送它出——但我找不到一种方法来做到这一点并让用户输入进程,如果我使用Csystem()调用,他或她可以。当JavaSE7出现时,这似乎是可能的——我只是想知道现在是否有解

java - 在 Java 6 中使用继承的 stdin/stdout/stderr 启动进程

如果我通过Java的ProcessBuilder启动一个进程类,我可以完全访问该进程的标准输入、标准输出和标准错误流,如JavaInputStreams和OutputStreams。但是,我找不到将这些流无缝连接到System.in、System.out和System.err的方法。可以使用redirectErrorStream()来获取单个InputStream包含子进程的标准输出和标准错误,然后循环并通过我的标准发送它出——但我找不到一种方法来做到这一点并让用户输入进程,如果我使用Csystem()调用,他或她可以。当JavaSE7出现时,这似乎是可能的——我只是想知道现在是否有解

java - 从 Java 中读取 System.in 的最快方法是什么?

我在使用Scanner(System.in)时从标准中读取由空格或换行符分隔的一堆整数。在Java中有没有更快的方法来做到这一点? 最佳答案 IsthereanyfasterwayofdoingthisinJava?是的。扫描仪相当慢(至少根据我的经验)。如果您不需要验证输入,我建议您只需将流包装在BufferedInputStream中并使用String.split/Integer.parseInt之类的东西。一个小比较:使用此代码读取17兆字节(4233600个数字)Scannerscanner=newScanner(Syste