假设我想将输入传递给Python程序,然后在命令行上从用户那里获得输入.
echo http://example.com/image.jpg | python solve_captcha.py
Run Code Online (Sandbox Code Playgroud)
以及的内容solve_captcha.py是:
import sys
image_url = sys.stdin.readline()
# Download and open the captcha...
captcha = raw_input("Solve this captcha:")
# do some processing...
Run Code Online (Sandbox Code Playgroud)
以上将触发EOFError: EOF when reading a line错误.
我也尝试添加sys.stdin.close()一行,这提示了一个ValueError: I/O operation on closed file.
您可以管道信息stdin,然后从用户那里获得输入吗?
注意:这是一个简化的简化示例 - 请不要回答说"你为什么要在第一种情况下这样做",这真的令人沮丧.我只是想知道你是否可以管道信息stdin,然后提示用户输入.
无论如何都要读取STDIN非阻塞的PHP:
我试过这个:
stream_set_blocking(STDIN, false);
echo fread(STDIN, 1);
Run Code Online (Sandbox Code Playgroud)
还有这个:
$stdin = fopen('php://stdin', 'r');
stream_set_blocking($stdin, false);
echo 'Press enter to force run command...' . PHP_EOL;
echo fread($stdin, 1);
Run Code Online (Sandbox Code Playgroud)
但它仍会阻塞,直到fread得到一些数据.
我注意到一些关于这个(7岁)的开放式错误报告,所以如果无法完成,是否有人知道任何可以实现此目的的粗暴黑客(在Windows和Linux上)?
我希望从for中获取stdin的输入
3
10 20 30
Run Code Online (Sandbox Code Playgroud)
第一个数字是第二行中的数字量.这就是我得到的东西,但它停留在while循环中...所以我相信.我在调试模式下运行,数组没有分配任何值...
import java.util.*;
public class Tester {
public static void main (String[] args)
{
int testNum;
int[] testCases;
Scanner in = new Scanner(System.in);
System.out.println("Enter test number");
testNum = in.nextInt();
testCases = new int[testNum];
int i = 0;
while(in.hasNextInt()) {
testCases[i] = in.nextInt();
i++;
}
for(Integer t : testCases) {
if(t != null)
System.out.println(t.toString());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个脚本,我想从另一个脚本运行.问题是子脚本(进程)在继续之前需要用户输入.
var child = spawn('script');
child.stdin.setEncoding('utf8');
child.stdout.on('data', function (data) {
console.log(data.toString().trim()); // tells me to input my data
child.stdin.write('my data\n');
});
Run Code Online (Sandbox Code Playgroud)
输入数据后,子脚本应继续,但它会挂在那里.
实际上上面的代码对我有用.我在子脚本中使用commander.js来提示用户执行操作.以下是我如何回应孩子的脚本提示:
child.stdout.on('data', function (data) {
switch (data.toString().trim()) {
case 'Username:':
child.stdin.write('user');
break;
case 'Password:':
child.stdin.write('pass');
break;
}
});
Run Code Online (Sandbox Code Playgroud)
同样的事情与假设一起工作:
var suppose = require('suppose');
suppose('script')
.on('Username: ').respond('user')
.on('Password: ').respond('pass')
.error(function (err) {
console.log(err.message);
})
.end(function (code) {
console.log(code);
done();
});
Run Code Online (Sandbox Code Playgroud) 在以下代码中
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(chunk) {
process.stdout.write('data: ' + chunk);
});
process.stdin.on('end', function() {
process.stdout.write('end');
});
Run Code Online (Sandbox Code Playgroud)
我无法使用ctrl + D触发'end'事件,而ctrl + C只是退出而不触发它.
hello
data: hello
data
data: data
foo
data: foo
^F
data: ?
^N
data: ?
^D
data: ?
^D^D
data: ??
Run Code Online (Sandbox Code Playgroud) 是否有可能让stdin数据进入pandas DataFrame?
目前我将数据保存在一个中间json文件中然后执行:
pandas.read_json('my_json_file.json')
Run Code Online (Sandbox Code Playgroud)
但是想知道是否可以直接在python脚本中管道stdin.我发现了这个:如果在Python中没有数据传输,如何从stdin或文件中读取? 但不知道如何在熊猫DF中逐行插入.
我正在做一个在线评判并遇到一些问题
我到现在为止做了什么?
所以我的PHP代码获取用户代码并将其提供给函数Compile(),该函数编译代码并报告编译是否成功.这部分代码运行得很好.
现在剩下的就是运行代码和评估
我的问题
我的问题是如何处理用户的标准输入.用户通常使用scanf,BufferedReader等从stdin获取输入,这些值通常使用键盘获取.现在假设我已将这些值写入文件中.我将如何为他们提供这些价值.
我的尝试
好吧,我正在寻找各种方式,我遇到了这个
fopen('php://stdin', 'w')
Run Code Online (Sandbox Code Playgroud)
如果我认为这个工作就像一个文件而不是它会导致问题,如果多个用户在同一时间使用stdin.
我正试图通过面试街学习二郎.我现在只是学习这门语言所以我什么都不知道.我想知道如何从stdin读取并写入stdout.
我想写一个写"Hello World!"的简单程序.stdin收到的次数.
所以用stdin输入:
6
Run Code Online (Sandbox Code Playgroud)
写到标准输出:
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会一次读取stdin一行(即使在这种情况下它只是一位数)所以我想我将使用get_line.这就是我现在所知道的.
谢谢
谢谢
我有一个程序,我从文件中加载文本,然后根据其中一个字段过滤它.我感兴趣的是此过滤步骤后的数据大小.
理想情况下,我可以做类似的事情: awk '$2>=10' <myfile | du -
我可以只应用过滤器并将输出保存在某处,在其上调用du,然后删除该文件,但文件非常大,因此写入磁盘可能需要一段时间.
认识到du代表"磁盘使用",我怀疑我会问一些没有意义的东西,考虑到程序是如何工作的.如果有另一个常用的实用程序,请建议它!
我试图在Windows 7 64位和Python 3.4.3上异步读取stdin
我尝试了这个受到SO回答的启发:
import asyncio
import sys
def reader():
print('Received:', sys.stdin.readline())
loop = asyncio.get_event_loop()
task = loop.add_reader(sys.stdin.fileno(), reader)
loop.run_forever()
loop.close()
Run Code Online (Sandbox Code Playgroud)
然而,它提出了一个OSError: [WInError 100381] An operation was attempted on something that is not a socket.
类似文件的对象是否stdin可以包含在类中以赋予它套接字的API?我已单独提出这个问题,但如果解决方案很简单,请在此处回答.
假设我无法包装类似文件的对象使其成为套接字,我尝试使用流作为这个要点的启发:
import asyncio
import sys
@asyncio.coroutine
def stdio(loop):
reader = asyncio.StreamReader(loop=loop)
reader_protocol = asyncio.StreamReaderProtocol(reader)
yield from loop.connect_read_pipe(lambda: reader_protocol, sys.stdin)
@asyncio.coroutine
def async_input(loop):
reader = yield from stdio(loop)
line = yield from reader.readline()
return …Run Code Online (Sandbox Code Playgroud)