我阅读文件的时间占90%,最终结果如下:
with open('file.txt') as f:
for line in f:
my_function(line)
Run Code Online (Sandbox Code Playgroud)
这似乎是一个非常常见的情况,所以我想到了一个更短的方式,但这样安全吗?我的意思是文件是否正确关闭,或者您是否看到此方法存在任何其他问题?:
for line in open('file.txt'):
my_function(line)
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢Eric,这似乎是最好的解决方案.希望我不要将此与此讨论,但是当我们想在几个操作中使用line(而不仅仅是my_function的参数)时,您如何看待这种方法:
def line_generator(filename):
with open(filename) as f:
for line in f:
yield line
Run Code Online (Sandbox Code Playgroud)
然后使用:
for line in line_generator('groceries.txt'):
print line
grocery_list += [line]
Run Code Online (Sandbox Code Playgroud)
这个函数是否比iterate_over_file有缺点?
我希望制作交互式代码学习系统,它允许用户(通常是年轻程序员)用c ++语言编写一个函数的内容,将其发送到服务器,然后将其编译成动态库并从主程序调用.
程序期望函数根据给定的参数返回正确的答案.
当然,会有一些孩子,会导致分段错误等错误.(服务器是Linux驱动的).
那么,我可以创建退出函数的信号处理程序吗?
我想要完成的事情:
for (int i = 0; i < PLAYER_NUM; i++) {
snprintf(buf, sizeof(buf), "players/%s.so", player[i]);
handle = dlopen(buf, RTLD_LAZY);
add[i] = (int (*)(int, int))dlsym(handle, "sum");
} // that was simply loading of functions from libraries.
for (int x = 0; x < 10; x++)
for (int i = 0; i < PLAYER_NUM; i++) {
if(failed[i]) continue;
ret = add[i](x, 5);
if(sigfault_received() || res != (x + 5)) {
failed[i] = true;
}
}
Run Code Online (Sandbox Code Playgroud) 我有程序,其结构定义如下:
struct foo {
int magic;
int bar;
};
Run Code Online (Sandbox Code Playgroud)
当我创建这个结构的对象时,我总是这样做:
object.magic = 654321;
Run Code Online (Sandbox Code Playgroud)
该程序最终会因核心转储而死亡.
是否有可能使c ++程序自动计算所有查找所有条形值,例如求和?
PS.到目前为止,我已经调查过我不能简单地将核心打开为二进制并搜索654321转换为十六进制(在十六进制编辑器中找不到).维基百科说现代的unix系统使用ELF,但不幸的是我不理解所有的标题系统,因为我是一个没有经验的程序员.
有没有办法在没有学习整个标题结构的情况下获得此栏?