如果我运行,git diff我希望看到我的工作目录相对于之前提交的任何更改的列表(或者工作目录内容列表,如果它是一个没有提交的新repo).试试这个例子:
$ mkdir temp
$ cd temp
$ git init
$ echo "first line" > test.txt
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# test.txt
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
让我们看看test.txt的差异:
$ git diff
Run Code Online (Sandbox Code Playgroud)
这没有输出!
我希望看到一个差异,+ first line但我什么都没得到.它没有告诉我发生了什么.stackoverflow上的人告诉我git add一些文件,所以我这样做:
$ git add .
$ git diff
Run Code Online (Sandbox Code Playgroud)
依然没有!
Git GUI …
Python的unittest discover没有找到我的测试!
我一直在使用鼻子来发现我的单元测试,它工作正常.从我的项目的顶层,如果我跑,nosetests我得到:
Ran 31 tests in 0.390s
Run Code Online (Sandbox Code Playgroud)
现在Python 2.7 unittest 已经发现,我已经尝试过使用了
python -m unittest discover
Run Code Online (Sandbox Code Playgroud)
但我明白了
Ran 0 tests in 0.000s
Run Code Online (Sandbox Code Playgroud)
我的目录结构是:
myproj/
reporter/
__init__.py
report.py
[other app modules]
tests/
__init__.py
test-report.py
[other test modules]
Run Code Online (Sandbox Code Playgroud)
你有什么想法为什么unittest的发现算法找不到测试?
我在Windows 7上使用Python 2.7.1和nose 1.0.0.
我有一个新的64位Windows机器并使用python进行各种操作,因此更愿意安装64位python.
但是,我的一个python项目创建了一个Windows可执行文件,然后在32位Windows机器上运行(使用py2exe创建).
如何使用64位python和py2exe创建32位可执行文件?
如果我不能这样做,我想我的选择是:
在包括我的所有机器上使用32位python; 要么
在32位计算机上安装python,不要使用py2exe.
任何建议都非常感谢.
我试图在Windows 7 64位和Python 3.4.3上异步读取stdin
我尝试了这个受到SO回答的启发:
import asyncio
import sys
def reader():
print('Received:', sys.stdin.readline())
loop = asyncio.get_event_loop()
task = loop.add_reader(sys.stdin.fileno(), reader)
loop.run_forever()
loop.close()
Run Code Online (Sandbox Code Playgroud)
然而,它提出了一个OSError: [WInError 100381] An operation was attempted on something that is not a socket.
类似文件的对象是否stdin可以包含在类中以赋予它套接字的API?我已单独提出这个问题,但如果解决方案很简单,请在此处回答.
假设我无法包装类似文件的对象使其成为套接字,我尝试使用流作为这个要点的启发:
import asyncio
import sys
@asyncio.coroutine
def stdio(loop):
reader = asyncio.StreamReader(loop=loop)
reader_protocol = asyncio.StreamReaderProtocol(reader)
yield from loop.connect_read_pipe(lambda: reader_protocol, sys.stdin)
@asyncio.coroutine
def async_input(loop):
reader = yield from stdio(loop)
line = yield from reader.readline()
return …Run Code Online (Sandbox Code Playgroud) 我想有一个包含一些我可以传递给的单元测试的python模块hg bisect --command.
单元测试正在测试django应用程序的一些功能,但我不认为我可以使用hg bisect --command manage.py test mytestapp因为mytestapp必须在settings.py中启用,并且hg bisect更新工作目录时对settings.py的编辑将被破坏.
因此,我想知道以下是否是最好的方法:
import functools, os, sys, unittest
sys.path.append(path_to_myproject)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
def with_test_db(func):
"""Decorator to setup and teardown test db."""
@functools.wraps
def wrapper(*args, **kwargs):
try:
# Set up temporary django db
func(*args, **kwargs)
finally:
# Tear down temporary django db
class TestCase(unittest.TestCase):
@with_test_db
def test(self):
# Do some tests using the temporary django db
self.fail('Mark this revision as bad.')
if '__main__' == __name__: …Run Code Online (Sandbox Code Playgroud) 我有一个紧急的错误,我明天要跟踪.我知道之前的hg版本很好,所以我正在考虑使用hg bisect.
但是,我在Windows上并不想进入DOS脚本.
理想情况下,我可以编写Python单元测试并使用hg bisect.这是我的第一次尝试.
bisector.py
#!/usr/bin/env python
import sys
import unittest
class TestCase(unittest.TestCase):
def test(self):
#raise Exception('Exception for testing.')
#self.fail("Failure for testing.")
pass
def main():
suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestCase)
result = unittest.TestResult()
suite.run(result)
if result.errors:
# Skip the revision
return 125
if result.wasSuccessful():
return 0
else:
return 1
if '__main__' == __name__:
sys.exit(main())
Run Code Online (Sandbox Code Playgroud)
也许我可以跑:
hg bisect --reset
hg bisect --bad
hg bisect --good -r 1
hg bisect --command=bisector.py
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?谢谢你的建议.
我正在尝试使用Python设置Windows环境变量.
似乎与文档相反,os.environ可以获取环境变量但不能设置它们.尝试在Windows命令提示符下运行它们:
这有效:
python -c "import os; print(os.environ['PATH'])"
Run Code Online (Sandbox Code Playgroud)
这不是:
python -c "import os; os.environ['FOO'] = 'BAR'"
Run Code Online (Sandbox Code Playgroud)
尝试输入set命令提示符.环境变量FOO不存在.
如何从Python设置永久Windows环境变量?
我有一个DataFrame力 - 位移数据.位移数组已设置为DataFrame索引,列是不同测试的各种力曲线.
如何计算完成的工作("曲线下面积")?
我看着numpy.trapz哪些似乎做了我需要的东西,但我认为我可以避免像这样循环遍历每一列:
import numpy as np
import pandas as pd
forces = pd.read_csv(...)
work_done = {}
for col in forces.columns:
work_done[col] = np.trapz(forces.loc[col], forces.index))
Run Code Online (Sandbox Code Playgroud)
我希望DataFrame在曲线下创建一个新的区域而不是a dict,并且认为DataFrame.apply()或某些东西可能是合适的但不知道从哪里开始寻找.
简而言之:
DataFrame可以直接创建一项工作吗?在此先感谢您的帮助.
我正在通过使用另一个(父)笔记本中的魔法来运行 IPython 笔记本%run。
如果调用 using ,我想隐藏子笔记本中的一些输出%run,并认为我可以通过测试来做到这一点if __name__ == '__main__'
IPython 文档指出,当%run -n使用 switch 时:
__name__不是设置为__main__,而是设置为不带扩展名的运行文件的名称(就像 python 在导入时所做的那样)。这允许运行脚本并重新加载其中的定义,而无需调用受if __name__ == "__main__"子句保护的代码。
然而,它似乎对我不起作用。我试过这个:
在sub_notebook.ipynb:
print(__name__)
Run Code Online (Sandbox Code Playgroud)
在parent_notebook.ipynb:
%run -n sub_notebook.ipynb
Run Code Online (Sandbox Code Playgroud)
这会打印__main__,但文档说它应该打印sub_notebook。
请让我知道如何根据代码sub_notebook.ipynb是单独运行还是使用来选择性地运行代码%run?
我正在运行 IPython 版本 6.1.0
我正在使用Emacs和projectile,并尝试设置测试文件的路径,以便我可以使用projectile-toggle-between-implementation-and-test.
我打电话M-xprojectile-find-test-file但是Helm缓冲区是空的.无论我在pattern现场放置什么,Helm缓冲区中没有文件显示选择并输入相对于项目根目录的测试文件路径只会导致Dired缓冲区在项目根目录下打开.
请告知如何使用 projectile-find-test-file
python ×8
mercurial ×2
unit-testing ×2
windows ×2
32bit-64bit ×1
asynchronous ×1
command-line ×1
django ×1
emacs ×1
emacs-helm ×1
git ×1
ipython ×1
nose ×1
numpy ×1
pandas ×1
py2exe ×1
python-3.x ×1
shell ×1
stdin ×1
unittest2 ×1