(我是java新手)我需要启动一个进程并接收2个或3个句柄:对于STDIN,STDOUT,(和STDERR),所以我可以向进程写入输入并接收其输出,命令行管道的方式相同表现(例如"grep")
在Python中,这是通过以下代码实现的:
from subprocess import Popen, PIPE
p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE)
(child_stdin, child_stdout) = (p.stdin, p.stdout)
child_stdin.write('Yoram Opposum\n')
child_stdin.flush()
child_stdout.readlines()
Run Code Online (Sandbox Code Playgroud)
什么是Java等价物?
到目前为止我已经尝试过了
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader inp = new BufferedReader( new InputStreamReader(p.getInputStream()) );
BufferedWriter out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) );
out.write( "Some Text!\n\n" );
out.flush();
line = inp.readLine();
print("response1: " + line ); // that's ok
out.write( "Second Line...\n" );
out.flush();
line = inp.readLine();
print("response2: " + line ); // returns an empty string, if it …Run Code Online (Sandbox Code Playgroud) 尝试从 URL 中过滤掉用户密码。
(我可以通过最后一个“@”符号手动将其拆分,但我宁愿使用解析器)
Python 给出弃用警告,但urlparse()不处理用户/密码。
我应该只相信最后一个@符号,还是有新版本的分割用户?
Python 3.8.2 (default, Jul 16 2020, 14:00:26)
[GCC 9.3.0] on linux
>>> url="http://usr:pswd@www.site.com/path&var=val"
>>> import urllib.parse
>>> urllib.parse.splituser(url)
<stdin>:1: DeprecationWarning: urllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() instead
('http://usr:pswd', 'www.site.com/path&var=val')
>>> urllib.parse.urlparse(url)
ParseResult(scheme='http', netloc='usr:pswd@www.site.com', path='/path&var=val', params='', query='', fragment='')
#neigher with allow_fragments:
>>> urllib.parse.urlparse(url,allow_fragments=True)
ParseResult(scheme='http', netloc='us:passw@ktovet.com', path='/all', params='', query='var=val', fragment='')
Run Code Online (Sandbox Code Playgroud)
(编辑: repr() 输出是部分的且具有误导性;请参阅我的答案。)
我不是自然语言编程学生,但我知道这不是简单的strcmp(n1,n2).
这是我到目前为止所学到的:
我不是在寻找拼写替代品!假设输入的拼写是正确的.
例如,下面的所有名称都可以指同一个人:
我试着:
注意:我的任务不是在文本中查找名称,而是比较2个名称.例如
name_compare( "James Brown", "Brown, James", "en-US" ) ---> 99.0%
Run Code Online (Sandbox Code Playgroud) 这不是我要求的:
有没有办法将正则表达式添加到另一个(用javascript语言)?
这样做的原因是为了简化代码维护(例如,如果包含的字符串很长或更容易由非程序员维护).
例如,在python中,我写了类似的东西:
regstr1 = 'dogs|cats|mice'
regstr_container = '^animal: (cows|sheep|%s|zebra)$' % regstr1
re.compile(regstr_container)
Run Code Online (Sandbox Code Playgroud)
但是在javascript中,正则表达式不是字符串.
re = /^animal: (rami|shmulik|dudu)$/;
Run Code Online (Sandbox Code Playgroud)
还是我错过了什么?
我有一个套接字客户端和一个套接字服务器.
(服务器在python中,并且是同步的.)
有时客户端发送一个空字符串.我需要确定这种情况,并返回一个回复.
使用此代码,服务器只是等待,并且客户端不会得到任何回报,除非它发送的东西mroe"胖";)
我如何捕捉空信息?它是否可能?
这是我的服务器代码:
import SocketServer
def multi_threaded_socket_server():
class MyRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
while True:
print 'waiting for client calls...'
received = self.request.recv( PACKET_SIZE )
(handle request... )
Run Code Online (Sandbox Code Playgroud) 可能重复:
Python:递增和递减运算符的行为
>>> a=2
>>> ++a
2
>>> a++
Traceback ( File "<interactive input>", line 1
a++
^
SyntaxError: invalid syntax
>>> ++a
2
Run Code Online (Sandbox Code Playgroud)
为什么++ x可以吗?
(我问的是,因为有人在工作时习惯性地写了++ i,它没有做到(习惯性地)预期,但也没有抛出错误,所以花了一些时间才找到错误.)