有几种方法可以写入stderr:
# Note: this first one does not work in Python 3
print >> sys.stderr, "spam"
sys.stderr.write("spam\n")
os.write(2, b"spam\n")
from __future__ import print_function
print("spam", file=sys.stderr)
Run Code Online (Sandbox Code Playgroud)
这似乎与Python#13 †的禅宗相矛盾,那么这里有什么区别,这种方式有哪些优点或缺点?应该使用哪种方式?
† 应该有一个 - 最好只有一个 - 显而易见的方法.
可能重复:
Python:递增和递减运算符的行为
当我回顾我的VB6时,我总是嘲笑自己,并且想:"现代语言不允许用双加号增加?":
number++
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我在Python文档中找不到任何相关内容.我真的要服从自己number = number + 1
吗?人们不会使用这种++/--
符号吗?
我想迭代整个文件的每一行.一种方法是通过读取整个文件,将其保存到列表中,然后浏览感兴趣的行.这种方法使用了大量内存,所以我正在寻找替代方案.
我的代码到目前为止:
for each_line in fileinput.input(input_file):
do_something(each_line)
for each_line_again in fileinput.input(input_file):
do_something(each_line_again)
Run Code Online (Sandbox Code Playgroud)
执行此代码会显示错误消息:device active
.
有什么建议?
目的是计算成对的字符串相似性,意味着对于文件中的每一行,我想与每隔一行计算Levenshtein距离.
我可以在批处理文件的末尾放置什么命令来防止在执行文件后自动关闭控制台?
为什么以下在Python中出现意外行为?
>>> a = 256
>>> b = 256
>>> a is b
True # This is an expected result
>>> a = 257
>>> b = 257
>>> a is b
False # What happened here? Why is this False?
>>> 257 is 257
True # Yet the literal numbers compare properly
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 2.5.2.尝试一些不同版本的Python,似乎Python 2.3.3显示了99到100之间的上述行为.
基于以上所述,我可以假设Python在内部实现,使得"小"整数以不同于大整数的方式存储,is
运算符可以区分.为什么泄漏抽象?当我不知道它们是否是数字时,比较两个任意对象以查看它们是否相同的更好的方法是什么?
我有一个大约有一百万行的文件.我需要转到第320123行来检查数据.我怎么做?
在第一次出现分隔符时拆分字符串的最佳方法是什么?
例如:
"123mango abcd mango kiwi peach"
Run Code Online (Sandbox Code Playgroud)
分裂第一个mango
得到:
"abcd mango kiwi peach"
Run Code Online (Sandbox Code Playgroud) 让我们来:
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)
我正在寻找的结果是
r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Run Code Online (Sandbox Code Playgroud)
并不是
r = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Run Code Online (Sandbox Code Playgroud)
非常感激
我有两个对象:oldObj
和newObj
.
数据oldObj
用于填充表单,newObj
是用户更改此表单中的数据并提交数据的结果.
两个对象都很深,即.它们具有对象或对象数组等属性 - 它们可以是n级深度,因此diff算法需要是递归的.
现在我需要不只是从弄清楚什么改变(如添加/更新/删除)oldObj
来newObj
,却怎么也最能代表它.
到目前为止,我的想法只是构建一个genericDeepDiffBetweenObjects
方法,它将返回表单上的对象,{add:{...},upd:{...},del:{...}}
但后来我想:其他人必须先需要它.
那么......有没有人知道一个库或一段代码可以做到这一点,并且可能有更好的方式来表示差异(以一种仍然是JSON可序列化的方式)?
我想到了一种更好的方式来表示更新的数据,使用相同的对象结构newObj
,但将所有属性值转换为表单上的对象:
{type: '<update|create|delete>', data: <propertyValue>}
Run Code Online (Sandbox Code Playgroud)
所以,如果newObj.prop1 = 'new value'
和oldObj.prop1 = 'old value'
它会设置returnObj.prop1 = {type: 'update', data: 'new value'}
当我们得到数组的属性时,它会变得非常毛茸茸,因为数组[1,2,3]
应该被计算为等于[2,3,1]
,这对于基于值的类型的数组(如string,int和bool)来说非常简单,但是当涉及到它时,它实际上很难处理引用类型的数组,如对象和数组.
应该找到的示例数组相等:
[1,[{c: 1},2,3],{a:'hey'}] and [{a:'hey'},1,[3,{c: 1},2]]
Run Code Online (Sandbox Code Playgroud)
检查这种类型的深度值相等不仅非常复杂,而且还要找出一种表示可能的变化的好方法.
python ×7
batch-file ×1
command-line ×1
compare ×1
file-read ×1
identity ×1
int ×1
javascript ×1
less-unix ×1
list ×1
object ×1
operators ×1
printing ×1
python-3.5 ×1
python-3.x ×1
search ×1
shell ×1
split ×1
stderr ×1
syntax ×1
transpose ×1
type-hinting ×1
unix ×1
windows ×1