除非一个回购包含几个独立的项目,否则在回购.gitignore的根部只有一个文件比在整个过程中只有一个文件是最简单的.当在一种方法比另一种方法更好时,是否有关于此或在线分析的标准最佳实践?
网址是否http://example.com/foo?bar有效?
我正在寻找一个官方的链接,说明这种或那种方式.一个简单的是/否答案或轶事证据不会削减它.
我有一些字符串形式的代码,并希望在不写入磁盘的情况下创建一个模块.
当我尝试使用imp和StringIO对象来执行此操作时,我得到:
>>> imp.load_source('my_module', '', StringIO('print "hello world"'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: load_source() argument 3 must be file, not instance
>>> imp.load_module('my_module', StringIO('print "hello world"'), '', ('', '', 0))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: load_module arg#2 should be a file or None
Run Code Online (Sandbox Code Playgroud)
如何在没有实际文件的情况下创建模块?或者,如何在不写入磁盘的情况下将StringIO包装在文件中?
更新:
注意:此问题在python3中也是一个问题.
我试图加载的代码只是部分信任.我已经完成了它,并确定它不会导入任何东西或做任何我不喜欢的事情,但我不相信它足以运行它,当我有可能被修改的局部变量,并且我不相信我自己的代码,以避免我试图导入的代码.
我创建了一个只包含以下内容的空模块:
def load(code):
# Delete all local variables
globals()['code'] = code
del locals()['code']
# Run the code
exec(globals()['code'])
# …Run Code Online (Sandbox Code Playgroud) 让我们使用朋友的经典例子.
class Friendship(models.Model):
user1 = models.ForeignKey(User, related_name='friends1')
user2 = models.ForeignKey(User, related_name='friends2')
handshakes = models.PositiveIntegerField()
hugs = models.PositiveIntegerField()
# other silly data
Run Code Online (Sandbox Code Playgroud)
友谊中的两个朋友(user1和user2)应该完全相同.我应该可以说(user1,user2)是unique_together而不必担心(user2,user1)意外出现.我应该能够轻松地获得给定用户的所有朋友,但相反,我必须编写一个自定义管理器或创建一些其他方式来获取所有友谊,其中该用户是user1在关系中,以及所有友谊所在的地方该用户是user2.
我正在考虑尝试编写自己的SymmetricKey.有人请阻止我.
运行Django单元测试是远远太慢.特别是当我只想运行一个测试,但测试运行器想要创建整个数据库并销毁整个事件只是为了那个测试.
在我没有改变任何模型的情况下,如果Django不打算尝试创建和销毁整个数据库,我可以节省大量时间,而是将其保存下次.更好的是,如果测试运行器能够查看哪些模型已更改并且仅在运行测试之前替换那些模型,那将会很棒.
我宁愿不必自己将测试运行器子类化,但如果我很快找不到解决方案,那就是我将要做的事情.有没有这样的东西已经存在?
以下危险吗?
$ myscript '<somejsoncreatedfromuserdata>'
Run Code Online (Sandbox Code Playgroud)
如果是这样,我该怎么做才能使它不危险?
我意识到这可能取决于shell,OS,用于进行系统调用的实用程序(如果在编程语言中完成)等等.但是,我只想知道应该注意哪些事情.
我有一个保持磁盘缓存的抽象模型.当我删除模型时,我需要它来删除缓存.我希望每个派生模型都能实现这一点.
如果我连接指定抽象模型的信号,则不会传播到派生模型:
pre_delete.connect(clear_cache, sender=MyAbstractModel, weak=False)
Run Code Online (Sandbox Code Playgroud)
如果我尝试在init中连接信号,在那里我可以获得派生类名,它可以工作,但我担心它会尝试清除缓存,就像我初始化派生模型一样多次,而不是一次.
我应该在哪里连接信号?
在Python 3中,Unicode字符串应该为您提供Unicode字符的数量,但我无法弄清楚如何在某些字符组合的情况下获得字符串的最终显示宽度.
创世纪1:1 - בְּרֵאשִׁית,בָּרָאאֱלֹהִים,אֵתהַשָּׁמַיִם,וְאֵתהָאָרֶץ
>>> len('???????????, ?????? ????????, ??? ???????????, ????? ???????')
60
Run Code Online (Sandbox Code Playgroud)
但字符串只有37个字符宽.归一化不能解决问题,因为元音(较大字符下面的点)是不同的字符.
>>> len(unicodedata.normalize('NFC', '???????????, ?????? ????????, ??? ???????????, ????? ???????'))
60
Run Code Online (Sandbox Code Playgroud)
作为旁注:textwrap在这方面,模块完全被打破,积极地包裹它不应该的地方. str.format似乎同样破碎了.
我想接受用户输入(有时这将是大段落)并生成LaTeX文档.我正在考虑一些简单的正则表达式来替换\with的\textbackslash所有实例{或者}用\}或的所有实例\{.
我怀疑这是否足够.我还需要做什么?注意:如果有一个特殊的库,我正在使用python.
为了澄清,我不希望任何东西被解析为LaTeX语法:$a$应该替换为\$a\$.
我有两个需要相互通信的python程序(一个是子进程).目前,我正在通过stdin和stdout.但是,写入子进程stdin似乎非常缓慢.
a.py,一个采用任意输入行并打印时间的程序:
from time import time, sleep
from sys import stdout, stdin
while True:
stdin.readline()
stdout.write('%f\n' % time())
stdout.flush()
Run Code Online (Sandbox Code Playgroud)
b.py,一个程序运行a.py并计算写入程序所需的时间stdin并从中读取stdout:
from time import time
from subprocess import PIPE, Popen
from threading import Thread
stdin_times = []
stdout_times = []
p = Popen(['python', 'a.py'], stdin=PIPE, stdout=PIPE)
for i in range(100000):
t1 = time()
p.stdin.write(b'\n')
p.stdin.flush()
t2 = float(p.stdout.readline().strip().decode())
t3 = time()
stdin_times.append(t2 - t1)
stdout_times.append(t3 - t2) …Run Code Online (Sandbox Code Playgroud) python ×4
django ×3
command-line ×1
git ×1
io ×1
json ×1
latex ×1
python-3.x ×1
sanitization ×1
stdio ×1
unicode ×1
unit-testing ×1
url ×1