小编Nis*_*ant的帖子

os.listdir可以挂起网络驱动器吗?它使用什么系统调用?

os.listdir在内部执行什么系统调用,并且由于存在os.listdir通过已安装的网络驱动器的情况,是否有可能挂起Python进程?

我们怀疑我们的应用服务器存在问题,因为os.listdir它试图列出安装在linux机器上的samba共享.显然,在我们遇到这个问题的时候,samba共享的DNS已经发生了变化.我们仍在尝试复制这种情况,但任何人都可以告诉我它将如何运作?并且命令ls也会像这样挂起来吗?

我们有什么方法可以在用户空间处理这个问题吗?

python samba

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

使用功能1的输出作为功能2的输入

所以我有一些代码如下:

def _step_1(a, b, c):
    some codes
    return d, e, f

def _step_2(d, e, f, a, b):
    some codes
    return g

def _run_all(a, b, c):
    g = _step_2(_step_1(a, b, c), a, b)
    return g
Run Code Online (Sandbox Code Playgroud)

它告诉我,我错过了两个参数"a"和"b".有人可以通过尝试保存一些步骤告诉我是否做错了什么吗?或者没有办法保存步骤?我知道我绝对可以这样写:

def _run_all(a, b, c):
    d, e, f = _step_1(a, b, c)
    g = _step_2(d, e, f, a, b)
    return g
Run Code Online (Sandbox Code Playgroud)

python function user-defined-functions

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

在数组中查找奇数项(没有对)的算法?

可能重复:
在列表中查找单个数字

给定一个整数数组的好算法,除了其中一个整数出现偶数次之外,找到一个出现奇数次的整数.

或许像二进制搜索一样的东西,比如2个n/2大小的小数组的所有元素,比较递归找出来?

编辑:

这个XOR算法实际上是假设{1,1,4,4,7,7,5,8,8,9,9}吗?我的输入也可以是randmon - {1,4,1,8,9,5,4,5,9,8}.那么这种情况下逻辑会发生变化吗?

algorithm

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

内部尝试除了Python之外 - 流程如何工作?

我们有内心的尝试,例如

try:

    try: (problem here)

    except: (goes here)

except: (will it go here) ??
Run Code Online (Sandbox Code Playgroud)

这是尝试除外的当前流程吗?如果外部try块内部被捕获异常,则是错误还是非错误?

python except

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

为什么不使用fread读取目录文件?

我正在通过莫里斯巴赫的Unix书中的一个例子.他写了一个简单的复制程序,如下所述.但是,当inputfile是目录文件时,它会失败.我偶然发现了opendir其他一些这样的API - 我应该使用它吗?

如果二进制文件可以使用它,为什么目录文件被认为是不同的?在Unix中,并不是所有被抽象为文件的内容,无论程序如何解释它.

另外,我如何扩展此程序以支持目录文件,然后创建一个mknod?我想测试一下,假设我在/home/user1 并且做了一个$./copy /home/user user-home-clone,mknod看看该目录将如何与家庭不同.我想user-home-clone可能没有对自身的引用,但是/home/user[尽管它会在/ home/user中存在一个名为user-home-clone的文件] 所有其他文件,因为当我们做副本时它不存在命令?

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

char buffer[2048];

int copy(FILE *source, FILE *destination)
{
    int count;
    while ((count = fread(buffer, 1, sizeof buffer , source)) > 0)
    {
        fwrite(buffer, 1, count, destination);
    }
    return 0;
}

int main(int argc, char* argv[])
{
    int status;
    FILE *source;
    FILE *destination;

    if (argc != 3)
    {
        printf("%s takes exactly 3 …
Run Code Online (Sandbox Code Playgroud)

c directory file mknod

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

并行启动多个任务,然后在Windows中等待它们?

如何在批处理脚本中并行执行一些任务并等待它们?

command1;

# command3, command4 and command5 should execute in sequence say task1
# command6, command7 and command8 should execute in sequence say task2
# both task1 and task2 should run independently

command3; command4; command5 | command6; command7; command8;

# should execute only after the above parallel tasks are completed

command9;
Run Code Online (Sandbox Code Playgroud)

作为概念验证,我尝试了类似的方法,但是它不起作用:

echo "Starting"
start /wait wait20.bat   
start /wait wait40.bat 
echo "Finishing"
Run Code Online (Sandbox Code Playgroud)

wait20.bat 看起来像:

echo "starting 20 seconds job"
timeout 20
echo "finishing 20 seconds job"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

windows batch-file

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

列表上的生成器与链接生成器和内存消耗?

谁能解释一下这些例子中的生成器是如何工作

在这个例子中来自http://www.dabeaz.com/generators/index.html

wwwlog = open("access-log")
bytecolumn = (line.rsplit(None,1)[1] for line in wwwlog)
bytes = (int(x) for x in bytecolumn if x != '-')
print "Total", sum(bytes)
Run Code Online (Sandbox Code Playgroud)
  1. 当我们链接这样的生成器时,除了代码对象创建之外,还有什么真正的工作发生,直到我们做sum()?
  2. 为什么我们需要分别执行line.split(None,1)[1]和int(x) - 这样做有什么好处?

在这个例子中(x*x代表范围内的x(1,100000000))

  1. 当解释器评估此表达式时,是否在Python 2中计算了范围(1,100000000)?
  2. 这是在本声明中还是在第一次运行发生器期间发生的
  3. 这在Python 3中有什么不同吗?

我有这个疑问的原因是这个片段:

def foo():
    for each in range(1,100000):
      yield each

a = foo()

# Here range is not evaluated until generator is run or just 
# before first yield is hit which is expected.

a=(x for x in range(1,100000)) 

# I thought …
Run Code Online (Sandbox Code Playgroud)

python generator

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

为什么python中的namedtuple需要一个名字?

为什么我们需要提及的名字Cardnamedtuple像下面?

import collections

Card = collections.namedtuple('Card', ['rank', 'suit'])
Run Code Online (Sandbox Code Playgroud)

我认为一个简单的Card = collections.namedtuple(['rank', 'suit'])实际上可以产生同样的效果吗?

例如,我可以在dict中获得相同的信息,例如:

card = dict({'rank': 'A', 'suit': 'spade'})
Run Code Online (Sandbox Code Playgroud)

python namedtuple data-structures

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

eval的结果(arguments.callee);

我刚刚在Chrome Developer Tool中运行了以下功能,但没有任何反应.那么正在发生什么 - 这将是一个无限循环?

function foo() {
    eval( arguments.callee );
}

foo(  );
Run Code Online (Sandbox Code Playgroud)

如果我将功能修改为:

function foo() {
    console.log('Called');
    eval( arguments.callee.toString() );
}

foo();
Run Code Online (Sandbox Code Playgroud)

输出:

Called
Run Code Online (Sandbox Code Playgroud)

输出只打印一次,所以发生了什么?

javascript eval google-chrome-devtools

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

原始字符串到 python 字典(?)

我首先创建一个字典作为原始字符串,然后使用 b = eval(raw string) 定义 b。当我将原始字符串剪切并粘贴到 python 控制台时,效果很好,但是当我运行程序时,出现错误“TypeError:字符串索引必须是整数”

最小代码示例:

def drawBoardData2():
    cells = ''
    cells+=("r\'{")
    for r in range(0,2):
        c = 2
        cc = "light"
        piece = "b"
        player = "A"
        if r != 1:
            comma = ","
        else:
            comma = ""
        cells += ("\"{r}.{c}\":[1,1,\"{color}\",\"{pi}\",\"{pl}\",\"none\"]{cm} ".format(r=r, c=c, color=cc, pi=piece, pl=player, cm=comma))
    cells += ("}\'")
    #print("}\'")
    print(cells)
    b = eval(cells)
    print(b)
    print(type(b)) # result: <class 'str'> instead of <class 'dict'>
    b["1.2"] # result: "TypeError: string indices must be integers"

drawBoardData2() …
Run Code Online (Sandbox Code Playgroud)

python string dictionary

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