小编Pio*_*ost的帖子

如何终止使用shell = True启动的python子进程

我正在使用以下命令启动子进程:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用时杀死:

p.terminate()
Run Code Online (Sandbox Code Playgroud)

要么

p.kill()
Run Code Online (Sandbox Code Playgroud)

该命令在后台继续运行,所以我想知道如何实际终止该进程.

请注意,当我运行命令时:

p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

它在发出时会成功终止p.terminate().

python linux subprocess kill-process

285
推荐指数
7
解决办法
26万
查看次数

XPath包含(text(),'some string')与具有多个Text子节点的节点一起使用时不起作用

我有一个小问题,Xpath包含dom4j ...

让我们说我的XML是

<Home>
    <Addr>
        <Street>ABC</Street>
        <Number>5</Number>
        <Comment>BLAH BLAH BLAH <br/><br/>ABC</Comment>
    </Addr>
</Home>
Run Code Online (Sandbox Code Playgroud)

假设我想在给定根元素的文本中找到所有具有ABC的节点...

所以我需要写的xpath就是

//*[contains(text(),'ABC')]

然而,这不是Dom4j返回的......这是dom4j问题还是我理解xpath如何工作.因为该查询仅返回Street元素而不返回Comment元素.

DOM使Comment元素成为具有四个标记2的复合元素

[Text = 'XYZ'][BR][BR][Text = 'ABC'] 
Run Code Online (Sandbox Code Playgroud)

我会假设查询应该仍然返回元素,因为它应该找到元素并运行包含但它不会......

以下查询返回元素,但它返回的远远多于元素,它还返回父元素...这对问题是不可取的...

//*[contains(text(),'ABC')]
Run Code Online (Sandbox Code Playgroud)

是否有任何人知道XPath查询会只返回元素<Street/><Comment/>

xpath dom4j

235
推荐指数
6
解决办法
47万
查看次数

Python"请求"模块的代理

关于Python 的优秀Requests模块,这只是一个简短的,简单的.

我似乎无法在文档中找到变量'proxies'应​​包含的内容.当我发送一个带有标准"IP:PORT"值的字典时,它拒绝了它要求2个值.所以,我猜(因为这似乎没有在文档中说明)第一个值是ip而第二个是端口?

文档只提到这个:

proxies - (可选)字典映射协议到代理的URL.

所以我试过了......我该怎么办?

proxy = { ip: port}
Run Code Online (Sandbox Code Playgroud)

在将它们放入dict之前,我应该将它们转换成某种类型吗?

r = requests.get(url,headers=headers,proxies=proxy)
Run Code Online (Sandbox Code Playgroud)

python http-request python-requests

145
推荐指数
7
解决办法
24万
查看次数

如何在Python中禁用和重新启用控制台日志记录?

我正在使用Python的日志记录模块,我想暂时禁用控制台日志记录,但它不起作用.

#!/usr/bin/python
import logging

logger = logging.getLogger() # this gets the root logger
# ... here I add my own handlers 
#logger.removeHandler(sys.stdout)
#logger.removeHandler(sys.stderr)

print logger.handlers 
# this will print [<logging.StreamHandler instance at ...>]
# but I may have other handlers there that I want to keep

logger.debug("bla bla")
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了bla blaon stdout,我不知道如何安全地禁用控制台处理程序.我怎么能确定我暂时删除了控制台StreamHandler而不是另一个?

python console logging stdout

134
推荐指数
9
解决办法
14万
查看次数

使用带有Python请求库的get方法的头文件

所以我最近偶然发现这个伟大的库在Python中处理HTTP请求; 在这里找到http://docs.python-requests.org/en/latest/index.html.

我喜欢使用它,但我无法弄清楚如何在我的获取请求中添加标题.救命?

python http-request python-requests

122
推荐指数
4
解决办法
22万
查看次数

如何使用setuptools/distribute包含包数据?

使用setuptools/distribute时,我无法让安装程序提取任何package_data文件.我读过的所有内容都表明以下是正确的方法.有人可以建议吗?

setup(
   name='myapp',
   packages=find_packages(),
   package_data={
      'myapp': ['data/*.txt'],
   },
   include_package_data=True,
   zip_safe=False,
   install_requires=['distribute'],
)
Run Code Online (Sandbox Code Playgroud)

myapp/data/数据文件的位置在哪里.

python setuptools distribute

115
推荐指数
8
解决办法
7万
查看次数

如何使用Python Requests库在post请求中发送cookie?

我正在尝试使用请求库发送带有帖子请求的cookie,但我不确定如何根据其文档实际设置cookie.该脚本用于维基百科,需要发送的cookie采用以下形式:

enwiki_session=17ab96bd8ffbe8ca58a78657a918558e; path=/; domain=.wikipedia.com; HttpOnly
Run Code Online (Sandbox Code Playgroud)

但是,requests文档快速入门将此作为唯一示例:

cookies = dict(cookies_are='working')
Run Code Online (Sandbox Code Playgroud)

如何使用此库对上述cookie进行编码?我是否需要使用python的标准cookie库,然后将其与POST请求一起发送?

python cookies http-request python-requests

80
推荐指数
2
解决办法
17万
查看次数

Python中的简单URL GET/POST功能

我似乎无法谷歌它,但我想要一个功能,这样做:

接受3个参数(或更多,无论如何):

  • 网址
  • 参数字典
  • POST或GET

返回结果和响应代码.

有没有这样做的代码片段?

python http

74
推荐指数
5
解决办法
22万
查看次数

有没有办法编写一个bash函数来中止整个执行,无论它是如何被调用的?

我在我的bash函数中使用"exit 1"语句来终止整个脚本,它工作正常:

function func()
{
   echo "Goodbye"
   exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Run Code Online (Sandbox Code Playgroud)

但后来我意识到,当调用它时它不起作用:

res=$(func)
Run Code Online (Sandbox Code Playgroud)

据我所知,我创建了一个子shell,"退出1"中止了子shell而不是主要的....

有没有办法编写一个中止整个执行的函数,无论它如何被调用?我只需要获得真正的返回值(由函数回应).

bash function exit subshell

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

有没有办法检查Linux上的当前rpath?

我知道可以使用readelf -d <elf> | grep RPATH从shell检查给定的二进制文件,但是可以在一个进程中执行此操作吗?

像(我的完全系统调用):

  /* get a copy of current rpath into buffer */
  sys_get_current_rpath(&buffer);
Run Code Online (Sandbox Code Playgroud)

我正在尝试在代码库中诊断一些可疑的SO链接问题,并且如果可能的话,我希望以这种方式检查RPATH(我宁愿不必生成外部脚本).

linux rpath

68
推荐指数
4
解决办法
6万
查看次数