小编Eli*_*sky的帖子

打开文件,读取,处理和回写 - Python中的最短方法

我想对文件做一些基本的过滤.读它,做处理,写回来.

我不是在寻找"打高尔夫球",而是想要最简单,最优雅的方法来实现这一目标.我提出了:

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语句使事情更短,因为我不必显式打开和关闭文件.

还有其他想法吗?

python coding-style

13
推荐指数
1
解决办法
9627
查看次数

线读取阻塞在0x1A上

我有以下文件:

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'.你能解释一下这种行为吗?

python windows binary-data

13
推荐指数
2
解决办法
3206
查看次数

instancetype vs singleton的类名?

据我所知,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)

最后结果是一样的,我只是想知道是否有理由在这里使用其中一个?

singleton objective-c instancetype

13
推荐指数
1
解决办法
3857
查看次数

无法使原始路径相对并且没有这样的文件或目录

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

prototype protocol-buffers dart proto

13
推荐指数
1
解决办法
3万
查看次数

Python的重新模块 - 保存状态?

我在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包装在我自己的对象中,以保持状态.有没有人用过这个?您是否了解半标准实现(在大型框架或其他内容中)?

您还可以推荐哪些其他解决方法?或许,我只是在滥用模块,能够以更清洁的方式满足我的需求吗?

提前致谢

python regex

12
推荐指数
2
解决办法
1242
查看次数

12
推荐指数
3
解决办法
1万
查看次数

在长时间运行的任务中保持GUI响应

在应用程序执行一些CPU繁重处理时保持GUI响应是有效GUI编程的挑战之一.

这里有一个很好的讨论如何在wxPython中执行此操作.总而言之,有3种方式:

  1. 使用线程
  2. 使用wxYield
  3. 将工作分块并在IDLE事件处理程序中执行

发现哪种方法最有效?其他框架(如Qt,GTK或Windows API)的技术也很受欢迎.

python user-interface wxpython

11
推荐指数
2
解决办法
3934
查看次数

Python列表序列化 - 最快的方法

我需要从Python脚本中的文件(到Python列表)中加载(反序列化)预先计算的整数列表.列表很大(高达数百万项),只要加载速度最快,我就可以选择存储它的格式.

哪种方法最快,为什么?

  1. import在.py文件上使用,该文件仅包含分配给变量的列表
  2. cPickle'sload
  3. 其他一些方法(也许numpy?)

另外,如何可靠地对这些事情进行基准测试?

附录:可靠地测量这个是很困难的,因为import它是缓存的,因此在测试中不能多次执行.第一次使用pickle加载也会因为操作系统的页面预先缓存而变得更快.加载100万个数字,cPickle第一次运行需要1.1秒,后续执行脚本需要0.2秒.

直觉上我觉得cPickle应该更快,但我会欣赏数字(我认为这是一个相当大的挑战).

是的,对我来说这很重要.

谢谢

python serialization caching

11
推荐指数
1
解决办法
6642
查看次数

在PyQt中具有拖放支持的QTreeView

在PyQt 4中,我想创建一个QTreeView,可以通过拖放操作重新组织其结构.

我为QTreeView实现了自己的模型(QAbstractItemModel),因此我的QTreeView正确显示了数据.现在我想为树的节点添加拖放支持,以便能够将树内的节点从一个父节点移动到另一个节点,拖动复制等等,但是我找不到任何完整的教程如何实现这一点.我找到了很少的QTreeWidget教程和提示,但没有为自定义模型的QTreeView找到.有人能指出我在哪里看?

谢谢.

python drag-and-drop pyqt qtreeview

11
推荐指数
1
解决办法
1万
查看次数

哪个是抑制"未使用变量"警告的最佳方法

有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)

c objective-c clang ios

11
推荐指数
2
解决办法
1万
查看次数