我想对文件做一些基本的过滤.读它,做处理,写回来.
我不是在寻找"打高尔夫球",而是想要最简单,最优雅的方法来实现这一目标.我提出了:
from __future__ import with_statement
filename = "..." # or sys.argv...
with open(filename) as f:
new_txt = # ...some translation of f.read()
open(filename, 'w').write(new_txt)
Run Code Online (Sandbox Code Playgroud)
该with语句使事情更短,因为我不必显式打开和关闭文件.
还有其他想法吗?
我有以下文件:
abcde
kwakwa
<0x1A>
line3
linllll
Run Code Online (Sandbox Code Playgroud)
其中,<0x1A>表示十六进制值为0x1A的字节.尝试在Python中读取此文件时:
for line in open('t.txt'):
print line,
Run Code Online (Sandbox Code Playgroud)
它只读取前两行,并退出循环.
解决方案似乎是以二进制(或通用换行模式)打开文件 - 'rb'或'rU'.你能解释一下这种行为吗?
据我所知,instancetype向编译器声明该方法的返回类型与接收消息的类相同.
传统上我总是声明我的单例初始值设定项,并将类名显式设置为返回类型:
@interface MyClass : NSObject
+ (MyClass *)sharedInstance;
@end
Run Code Online (Sandbox Code Playgroud)
现在我想知道我是否应该使用instancetype,如下所示:
@interface MyClass : NSObject
+ (instancetype)sharedInstance;
@end
Run Code Online (Sandbox Code Playgroud)
最后结果是一样的,我只是想知道是否有理由在这里使用其中一个?
go-dev
-blog
-blog-server
-blogpb
- blog.proto
-other
-dart
Run Code Online (Sandbox Code Playgroud)
我的项目中有一个类似的目录,当我运行以下命令时,blogpb我在该目录中创建.proto文件到dart目录:
protoc -I=. --dart_out=$DST_DIR $SRC_DIR/blogpb/blog.proto
// got : Could not make proto path relative: /blogpb/blog.proto: No such file or directory
protoc --dart_out=grpc:lib/src/generated -Iprotos greet/greetpb/greet.proto
// got : protos: warning: directory does not exist.
// Could not make proto path relative: greet/greetpb/greet.proto: No such file or directory
Run Code Online (Sandbox Code Playgroud)
上面的错误命令是什么?以及如何为此创建generatedinto目录?dart
我在Python中发现的最大烦恼之一是re模块无法在匹配对象中明确地保存其状态而无法保存其状态.通常,需要解析行,如果它们符合某个正则表达式,则从相同的正则表达式中取出它们的值.我想写这样的代码:
if re.match('foo (\w+) bar (\d+)', line):
# do stuff with .group(1) and .group(2)
elif re.match('baz whoo_(\d+)', line):
# do stuff with .group(1)
# etc.
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,无法找到前一次调用的匹配对象re.match,所以这样写的如下:
m = re.match('foo (\w+) bar (\d+)', line)
if m:
# do stuff with m.group(1) and m.group(2)
else:
m = re.match('baz whoo_(\d+)', line)
if m:
# do stuff with m.group(1)
Run Code Online (Sandbox Code Playgroud)
随着elifs 的列表变长,这样不太方便并且变得非常笨拙.
一个hackish解决方案是将re.match和re.search包装在我自己的对象中,以保持状态.有没有人用过这个?您是否了解半标准实现(在大型框架或其他内容中)?
您还可以推荐哪些其他解决方法?或许,我只是在滥用模块,能够以更清洁的方式满足我的需求吗?
提前致谢
如果这是一个坏主意,如何在函数中分配内存?
在应用程序执行一些CPU繁重处理时保持GUI响应是有效GUI编程的挑战之一.
这里有一个很好的讨论如何在wxPython中执行此操作.总而言之,有3种方式:
您发现哪种方法最有效?其他框架(如Qt,GTK或Windows API)的技术也很受欢迎.
我需要从Python脚本中的文件(到Python列表)中加载(反序列化)预先计算的整数列表.列表很大(高达数百万项),只要加载速度最快,我就可以选择存储它的格式.
哪种方法最快,为什么?
import在.py文件上使用,该文件仅包含分配给变量的列表cPickle'sloadnumpy?)另外,如何可靠地对这些事情进行基准测试?
附录:可靠地测量这个是很困难的,因为import它是缓存的,因此在测试中不能多次执行.第一次使用pickle加载也会因为操作系统的页面预先缓存而变得更快.加载100万个数字,cPickle第一次运行需要1.1秒,后续执行脚本需要0.2秒.
直觉上我觉得cPickle应该更快,但我会欣赏数字(我认为这是一个相当大的挑战).
是的,对我来说这很重要.
谢谢
在PyQt 4中,我想创建一个QTreeView,可以通过拖放操作重新组织其结构.
我为QTreeView实现了自己的模型(QAbstractItemModel),因此我的QTreeView正确显示了数据.现在我想为树的节点添加拖放支持,以便能够将树内的节点从一个父节点移动到另一个节点,拖动复制等等,但是我找不到任何完整的教程如何实现这一点.我找到了很少的QTreeWidget教程和提示,但没有为自定义模型的QTreeView找到.有人能指出我在哪里看?
谢谢.
有3种(我知道)抑制"未使用的变量"警告的方法.任何特定方式都比其他方式更好?
第一
- (void)testString:(NSString *)testString
{
(void)testString;
}
Run Code Online (Sandbox Code Playgroud)
第二
- (void)testString:(NSString *)__unused testString
{
}
Run Code Online (Sandbox Code Playgroud)
第三
- (void)testString:(NSString *)testString
{
#pragma unused(testString)
}
Run Code Online (Sandbox Code Playgroud) python ×6
c ×2
objective-c ×2
binary-data ×1
caching ×1
clang ×1
coding-style ×1
dart ×1
instancetype ×1
ios ×1
malloc ×1
proto ×1
prototype ×1
pyqt ×1
qtreeview ×1
regex ×1
singleton ×1
windows ×1
wxpython ×1