小编Wol*_*tan的帖子

如何在python中通过shell管道接收参数?

我想做这样的事情:

find -name "foo*" | python main.py
Run Code Online (Sandbox Code Playgroud)

并访问find程序找到的所有文件.我如何在Python中访问它?

python linux shell pipe

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

如何修改pythons argparse中位置参数的metavar?

argparse包中,metavar参数修改程序的显示帮助消息.以下程序无意工作,它只是用于演示metavar参数的行为.

import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description = "Print a range.")

    parser.add_argument("-range1", nargs = 3, type = int, help = "Specify range with: start, stop, step.", metavar = ("start", "stop", "step"))
    parser.add_argument("-range2", nargs = 3, type = int, help = "Specify range with: start, stop, step.", metavar = "r2")
Run Code Online (Sandbox Code Playgroud)

相应的帮助信息是:

usage: main.py [-h] [-range1 start stop step] [-range2 r2 r2 r2]

Print a range.

optional arguments:
  -h, --help            show this help …
Run Code Online (Sandbox Code Playgroud)

python argparse

13
推荐指数
2
解决办法
2741
查看次数

如何编写静态python getitem方法?

为了使这项工作,我需要改变什么?

class A:
    @staticmethod
    def __getitem__(val):
        return "It works"

print A[0]
Run Code Online (Sandbox Code Playgroud)

请注意,我__getitem__在类型上调用方法A.

python static magic-methods operator-keyword

12
推荐指数
2
解决办法
4238
查看次数

Python:如何从另一个进程读取stdout非阻塞?

在进程的运行期间,我想读取它的标准输出并将其写入文件.然而,我的任何尝试都失败了,因为无论我尝试从stdout读取它尝试了什么,它一直阻止,直到过程结束.

这是我想要做的事情的片段.(第一部分只是一个将内容写入stdout的python脚本.)

import subprocess

p = subprocess.Popen('python -c \'\
from time import sleep\n\
for i in range(3):\n\
    sleep(1)\n\
    print "Hello", i\
\'', shell = True, stdout = subprocess.PIPE)

while p.poll() == None:
    #read the stdout continuously
    pass

print "Done"
Run Code Online (Sandbox Code Playgroud)

我知道有很多问题涉及同一主题.但是,我找到的没有一个能够回答我的问题.

python stdout popen

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

在PyDev中初始化单元测试?

我使用PyDev单元测试在eclipse中对我的python代码进行单元测试.我右键单击相应的文件并选择Run As - > Python unit-test.关于这个插件,我有几个问题:

  1. 有没有办法在这个类中的任何其他测试之前执行setUpClass方法?目前我只能使setUp工作,这是在任何类测试之前调用的
  2. 有没有办法在执行任何测试之前调用全局初始化?像setUpModule这样的东西,我也无法使用PyDev单元测试运行.

在此先感谢任何回答和评论^^
Cherio Woltan

例:

class TestClass(unittest.TestCase):

  @classmethod
  def setUpClass(self):
      print "Setup"    

  def test1(self):
      print "Test1"
  def test2(self):
      print "Test2"
Run Code Online (Sandbox Code Playgroud)

如果我运行这与运行方式- >的Python单元测试setUpClass方法不被调用.

python eclipse unit-testing eclipse-plugin pydev

11
推荐指数
2
解决办法
8925
查看次数

从python重定向stdout进行C调用

这是从一个跟进的问题在这里专门涉及了答案.


从python模块我调用一个Hello World可执行文件,只是打印Hello World到stdout.我有兴趣将该输出重定向到python StringIO并遇到这个答案,这几乎让我一直到解决方案.

这个答案的关键部分是这段代码:

1. def redirect_stdout():
2.     print "Redirecting stdout"
3.     sys.stdout.flush() # <--- important when redirecting to files
4.     newstdout = os.dup(1)
5.     devnull = os.open('/dev/null', os.O_WRONLY)
6.     os.dup2(devnull, 1)
7.     os.close(devnull)
8.     sys.stdout = os.fdopen(newstdout, 'w')
Run Code Online (Sandbox Code Playgroud)

此外,我想恢复重定向之前的stdout.

问题

  1. 上面的函数究竟发生了什么?
    • 是什么dupdup2做什么?
    • 什么是/dev/null
    • 第8行在做什么?(sys.stdout = os.fdopen(newstdout, 'w'))
  2. 如何将stdout存储在StringIO对象中?
  3. 如何在调用Hello World程序后恢复标准输出?

我很确定,一旦我得到了问题1的答案,问题2和3的答案就很容易了.无论如何我决定发布它们可能会将问题1的答案推到我想去的方向.

python stdout io-redirection dup2 dup

9
推荐指数
2
解决办法
3869
查看次数

Python:如何加载模块两次?

有没有办法在同一个python会话中加载模块两次?
用一个例子填写这个问题:这是一个模块:

Mod.py

x = 0
Run Code Online (Sandbox Code Playgroud)

现在我想导入该模块两次,比如创建一个类的两个实例,实际上有两个副本x.

要回答评论中的问题,"为什么有人会想要这样做,如果他们只能创建一个带有x变量的类":
你是对的,但是存在一些必须重写的大量源代码,并且加载一个模块两次将是一个快速修复^^.

python load module

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

安装ScientificPython作为依赖项

我试图将ScientificPython列为我的依赖项setup.py.但是,在安装过程中,python似乎找不到包.我的做法有什么问题?

这是我的设置:

import setuptools
setuptools.setup(name = 'MyPack', version = '0.1', 
  description= 'Description.',
  author = 'Me',
  packages = setuptools.find_packages(),
  install_requires = ['ScientificPython'],
  dependency_links = ["https://sourcesup.cru.fr/frs/?group_id=180&release_id=1351#stable-releases-2-8-title-content"])
Run Code Online (Sandbox Code Playgroud)

当我运行时,这是输出的重要部分python setup.py install:

Processing dependencies for MyPack==0.1
Searching for ScientificPython
Reading https://sourcesup.cru.fr/frs/?group_id=180&release_id=1351#stable-releases-2-8-title-content
Download error: unknown url type: https -- Some packages may not be found!
Reading http://pypi.python.org/simple/ScientificPython/
Reading http://dirac.cnrs-orleans.fr/ScientificPython/
Reading http://starship.python.net/~hinsen/ScientificPython/
No local packages or download links found for ScientificPython
Best match: None
Traceback (most recent call last):
  File "setup.py", …
Run Code Online (Sandbox Code Playgroud)

python installation dependencies setuptools package

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

用于Qt Designer的python自定义Qt小部件

我正在尝试仅使用Python为Qt Designer编写自定义小部件.我正在关注我在网上找到的几个教程,但是没有一个是在工作或者我认为最接近工作的例子.

所以我的问题是:

  1. 在Qt Designer的Widget Box中出现了一个自定义小部件的步骤?
  2. 如果你可以节省时间:请提供一个最小的工作示例(比如一个带有标签的小部件,上面写着"一个真正最小的Qt自定义小部件示例").
  3. 或者是否可能根本不可能只包含使用python的自定义小部件?

python pyqt4 qt-designer pyside custom-widgets

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

从python中找到python头路径?

相当于什么

numpy.get_include()
Run Code Online (Sandbox Code Playgroud)

如用于此处的Python,让我在Python的头文件所在的目录路径?

python numpy header-files

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