我想做这样的事情:
find -name "foo*" | python main.py
Run Code Online (Sandbox Code Playgroud)
并访问find程序找到的所有文件.我如何在Python中访问它?
在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) 为了使这项工作,我需要改变什么?
class A:
@staticmethod
def __getitem__(val):
return "It works"
print A[0]
Run Code Online (Sandbox Code Playgroud)
请注意,我__getitem__在类型上调用方法A.
在进程的运行期间,我想读取它的标准输出并将其写入文件.然而,我的任何尝试都失败了,因为无论我尝试从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)
我知道有很多问题涉及同一主题.但是,我找到的没有一个能够回答我的问题.
我使用PyDev单元测试在eclipse中对我的python代码进行单元测试.我右键单击相应的文件并选择Run As - > Python unit-test.关于这个插件,我有几个问题:
在此先感谢任何回答和评论^^
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模块我调用一个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.
dup和dup2做什么?/dev/null?sys.stdout = os.fdopen(newstdout, 'w'))StringIO对象中?我很确定,一旦我得到了问题1的答案,问题2和3的答案就很容易了.无论如何我决定发布它们可能会将问题1的答案推到我想去的方向.
有没有办法在同一个python会话中加载模块两次?
用一个例子填写这个问题:这是一个模块:
Mod.py
x = 0
Run Code Online (Sandbox Code Playgroud)
现在我想导入该模块两次,比如创建一个类的两个实例,实际上有两个副本x.
要回答评论中的问题,"为什么有人会想要这样做,如果他们只能创建一个带有x变量的类":
你是对的,但是存在一些必须重写的大量源代码,并且加载一个模块两次将是一个快速修复^^.
我试图将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为Qt Designer编写自定义小部件.我正在关注我在网上找到的几个教程,但是没有一个是在工作或者我认为最接近工作的例子.
所以我的问题是:
相当于什么
numpy.get_include()
Run Code Online (Sandbox Code Playgroud)
如用于此处的Python,让我在Python的头文件所在的目录路径?
python ×10
stdout ×2
argparse ×1
dependencies ×1
dup ×1
dup2 ×1
eclipse ×1
header-files ×1
installation ×1
linux ×1
load ×1
module ×1
numpy ×1
package ×1
pipe ×1
popen ×1
pydev ×1
pyqt4 ×1
pyside ×1
qt-designer ×1
setuptools ×1
shell ×1
static ×1
unit-testing ×1