小编Ber*_*ala的帖子

java:如何通过管道读取和写入进程(stdin/stdout)

(我是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)

java stdin pipe

4
推荐指数
1
解决办法
2万
查看次数

在 3.8+ 中从 URL 中分割用户名和密码(splituser 已弃用,没有替代方案)

尝试从 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() 输出是部分的且具有误导性;请参阅我的答案。)

url python-3.x

4
推荐指数
1
解决办法
1079
查看次数

人名比较:接近此任务的方法

我不是自然语言编程学生,但我知道这不是简单的strcmp(n1,n2).

这是我到目前为止所学到的:

  • 比较个人姓名无法100%解决
  • 有一些方法可以达到一定程度的准确性.
  • 答案将是特定于语言环境的,没关系.

我不是在寻找拼写替代品!假设输入的拼写是正确的.

例如,下面的所有名称都可以指同一个人:

  • 贝瑞·塔卡拉
  • 伯纳德·察卡拉
  • Berry J. Tsakala
  • Tsakala,Berry

我试着:

  1. 构建(或复制)一种算法,该算法对关系2输入名称进行分级
  2. 找到一个索引方法(对于我的数据库中的名称,哈希表等)

注意:我的任务不是在文本中查找名称,而是比较2个名称.例如

name_compare( "James Brown", "Brown, James", "en-US" ) ---> 99.0%
Run Code Online (Sandbox Code Playgroud)

language-agnostic nlp

3
推荐指数
1
解决办法
1713
查看次数

如何在javascript中连接正则表达式?

不是我要求的:

将多个正则表达式连接成一个正则表达式

有没有办法将正则表达式添加到另一个(用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)

还是我错过了什么?

javascript regex

3
推荐指数
1
解决办法
5901
查看次数

如何接收带有空数据的套接字消息?

我有一个套接字客户端和一个套接字服务器.

(服务器在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 sockets

2
推荐指数
1
解决办法
7390
查看次数

在python中,++ x是正确的语法."++ x"是什么意思?

可能重复:
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,它没有做到(习惯性地)预期,但也没有抛出错误,所以花了一些时间才找到错误.)

python syntax

1
推荐指数
1
解决办法
777
查看次数

标签 统计

python ×2

java ×1

javascript ×1

language-agnostic ×1

nlp ×1

pipe ×1

python-3.x ×1

regex ×1

sockets ×1

stdin ×1

syntax ×1

url ×1