是否有一个python模块与nslookup做同样的事情?我打算使用nslookup挖掘有关要废弃的URL域的一些信息.我知道我可以使用os.sys来调用nslookup,但我只是想知道是否已经有了这个python模块.提前致谢!
当我开发Python代码时,我通常在解释器中以临时方式测试它.我将import some_module测试它,找到一个bug,修复bug并保存,然后再使用内置reload函数进行reload(some_module)测试.
但是,假设在some_module我有import some_other_module,并且在测试时some_module我发现了一个错误some_other_module并修复它.现在调用reload(some_module)不会递归重新导入some_other_module.我必须手动重新导入依赖项(通过执行类似的操作reload(some_module.some_other_module),或者import some_other_module; reload(some_other_module),或者,如果我已经更改了一大堆依赖项并且丢失了我需要重新加载的内容,我需要重新启动整个解释器.
更方便的是,如果有一些recursive_reload功能,我可以做recursive_reload(some_module),让Python不仅重新加载some_module,而且还递归地重新加载每个some_module导入的模块(以及每个模块导入的每个模块,等等)我可以肯定我没有使用任何其他模块的旧版本some_module.
我不认为Python内置任何内容就像recursive_reload我在这里描述的功能一样,但有没有一种简单的方法可以将这样的东西组合在一起?
我可以为模块中的变量赋值.如果是,则类和模块之间有什么区别.
PS:我是个小家伙.如果它有助于解释.谢谢.
我知道可以从命令行调试Python脚本
python -m pdb my_script.py
Run Code Online (Sandbox Code Playgroud)
if my_script.py是一个打算运行的脚本python my_script.py.
但是,my_module.py应该运行python模块python -m my_module.甚至包含相对导入的脚本也应该运行python -m.我怎么能python -m my_module在pdb控制下运行?以下不起作用:
python -m pdb -m my_module
Run Code Online (Sandbox Code Playgroud) 我有一个Python模块,我想动态导入只给出一个模块名称的字符串.通常我使用importlib或者__import__这很好用,因为我知道我想从模块导入哪些对象,但是有没有办法import *动态地做同样的事情.还是有更好的方法?
我一般都知道使用它的不良做法,import *但我试图导入的模块是动态自动生成的,我无法知道包含我正在寻址的类的确切模块.
谢谢.
我正在编写一个python模块,它将包含一些将操作mongodb数据库的函数.
在将数据保存到数据库之前,如何验证传递给该函数的输入数据?
例如,假设模块中的一个函数createUser(user)接受python字典作为参数.该字典包含要保存在数据库中的用户信息.我想创建一个自动验证例程,它检查字典结构是否与数据库结构匹配.
我正在一个项目中编写一系列Python脚本; 每个脚本都在项目的子目录中,如下所示:
projectroot
|
|- subproject1
| |
| |- script1.main.py
| `- script1.merger.py
|
|- subproject2
| |
| |- script2.main.py
| |- script2.matcher.py
| `- script2.merger.py
|
`- subproject3
|
|- script3.main.py
|- script3.converter.py
|- script3.matcher.py
`- script3.merger.py
Run Code Online (Sandbox Code Playgroud)
现在有几个脚本共享一些代码.共享代码最好被认为是项目本身的一部分,而不是我单独编译并创建一个库,或者放入一个全站的PYTHONPATH.我可以将该代码放在各种位置,例如在projectroot目录本身中,或者在projectroot被调用的子目录中common(可能).
但是,到目前为止,我所考虑的大部分方法都是使用空__init__.py文件和使用相对导入(或sys.path在每个子项目中冗余地搞乱)从子项目中创建包.更糟糕的是,似乎围绕这个脚本系列构建包结构被拒绝的PEP-3122发出以下警告:
注意!该PEP已被拒绝.Guido将包中的脚本视为反模式.
如果包中的脚本是反模式的,那么如何以一种将公共代码保存在同一项目中的方式进行设置?或者这里是否可以接受基于模块和包的系统?哪种方法最干净?(FWIW我更喜欢在项目根目录中有一个文件,shared.py或者common.py在项目根目录中,而不是创建一个实用程序目录,它是"真正的"子项目的兄弟.)
我在"project/apps/myapp"文件夹中安装我的应用程序.apps和myapp文件夹都有init .py文件(没有任何模块缺少模块错误).现在我有错误:
Exception Type: RuntimeError at /
Exception Value: Conflicting 'person' models in application 'resume': <class
'apps.resume.models.Person'> and <class 'resume.models.Person'>.
Run Code Online (Sandbox Code Playgroud)
Django使用两个不同的pathes导入相同的模型.我该如何解决?
完整错误日志:
Traceback:
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
98. resolver_match = resolver.resolve(request.path_info)
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
343. for pattern in self.url_patterns:
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
372. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/voxa/.virtualenvs/42-test/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
366. self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.7/importlib/__init__.py" in import_module
37. __import__(name)
File "/home/voxa/django/FortyTwoTestTask/fortytwo_test_task/urls.py" in <module>
4. from resume import views
File "/home/voxa/django/FortyTwoTestTask/apps/resume/views.py" in <module>
4. from …Run Code Online (Sandbox Code Playgroud) 我想发布一个我写的python模块,它依赖于几个包.最简单的方法是什么,以便以编程方式下载这些软件包,以防它们在正在运行的系统上不可用?大多数这些模块应该通过easy_install或pip或类似的东西提供.我只想避免让用户单独安装每个模块.
谢谢.
所以我想做这个代码Kata练习.我想在单独的文件中用tdd实现kata:
算法:
# stringcalculator.py
def Add(string):
return 1
Run Code Online (Sandbox Code Playgroud)
和测试:
# stringcalculator.spec.py
from stringcalculator import Add
import unittest
class TestStringCalculator(unittest.TestCase):
def add_returns_zero_for_emptyString(self):
self.assertEqual(Add(' '), 0)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
运行测试文件时,我得到:
Ran 0 tests in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
但它应该返回一个失败的测试.我在这里想念什么?
python-module ×10
python ×8
class ×1
debugging ×1
django ×1
import ×1
module ×1
nslookup ×1
pdb ×1
pythonpath ×1
setuptools ×1
unit-testing ×1
validation ×1