小编Inb*_*ose的帖子

3.x中"加入"速度较慢吗?

当我遇到这个怪癖时,我只是乱搞.我想确保我不疯狂.

以下代码(适用于2.x和3.x):

from timeit import timeit
print ('gen: %s' % timeit('"-".join(str(n) for n in range(1000))', number=10000))
print ('list: %s' % timeit('"-".join([str(n) for n in range(1000)])', number=10000))
Run Code Online (Sandbox Code Playgroud)

在每个版本,同一台机器上运行3次.

注意:我将时间分组在同一行,以节省空间.

在我的Python 2.7.5上:

gen: 2.37875941643, 2.44095773486, 2.41718937347
list: 2.1132466183, 2.12248106441, 2.11737128131
Run Code Online (Sandbox Code Playgroud)

在我的Python 3.3.2上:

gen: 3.8801268438439718, 3.9939604983350185, 4.166233972077624
list: 2.976764740845537, 3.0062614747229555, 3.0734980312273894
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这是....它可能与如何实现字符串有关?


编辑:我没有使用它再次这样做,range()因为它也从2.x略有变化到3.x而是我使用下面的新代码:

from timeit import timeit
print ('gen: %s' % timeit('"-".join(str(n) for n in (1, 2, 3))', number=1000000))
print ('list: %s' % timeit('"-".join([str(n) for n in (1, 2, …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-3.x

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

字节到人类可读,然后回来.没有数据丢失

我需要将包含内存使用量的字符串1048576(例如:(1M))转换为人类可读的版本,反之亦然.

注意:我已经看过这里了: 可重用的库,以获得文件大小的人类可读版本?

在这里(即使它不是python): 如何将人类可读的内存大小转换为字节?

到目前为止没有什么能帮助我,所以我在其他地方看了

我在这里找到了一些可以解决此问题的内容:http://code.google.com/p/pyftpdlib/source/browse/trunk/test/bench.py​​?specpec = swn984&r = 984#137,或者,对于较短的网址:http://goo.gl/zeJZl

代码:

def bytes2human(n, format="%(value)i%(symbol)s"):
    """
    >>> bytes2human(10000)
    '9K'
    >>> bytes2human(100001221)
    '95M'
    """
    symbols = ('B', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
    prefix = {}
    for i, s in enumerate(symbols[1:]):
        prefix[s] = 1 << (i+1)*10
    for symbol in reversed(symbols[1:]):
        if n >= prefix[symbol]:
            value = float(n) / prefix[symbol]
            return format % locals()
    return format % dict(symbol=symbols[0], value=n)
Run Code Online (Sandbox Code Playgroud)

还有一个转换功能(相同的网站):

def human2bytes(s): …
Run Code Online (Sandbox Code Playgroud)

python memory converter human-readable

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

打印文件名

我是新手python,刚刚安装Eric6 我想要搜索一个文件夹(和所有子目录)来打印任何扩展名为.pdf I 的文件的文件名作为我的语法,但它错误说

调试程序引发异常未处理的FileNotFoundError
"[WinError 3]系统找不到指定的路径'C:'"
文件:C:\ Users\pcuser\EricDocs\Test.py,Line:6

这是我想要执行的语法:

import os

results = []
testdir = "C:\Test"
for folder in testdir:
  for f in os.listdir(folder):
    if f.endswith('.pdf'):
        results.append(f)

print (results)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

使用SharpZipLib制作没有文件夹结构的.tar.gz存档

我正在尝试.tar.gz使用SharpZipLib从文件夹中找到文件列表.问题是无论如何传递文件路径 - 结果总是包含文件路径 - 而不仅仅是文件自身.我在这里失踪了什么?

string filesFolder = "c:\\testfolder\\test\\";
List<string> filesToZip = new List<string>() { filesFolder +"test1", filesFolder  +"test2"};

using (FileStream fs = new FileStream(filesFolder +"myGz.tar.gz" , FileMode.Create, FileAccess.Write, FileShare.None))
using (Stream gzipStream = new GZipOutputStream(fs))
using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream))
     {
      foreach (string filename in filesToZip )
      {
        {
          TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
          tarArchive.WriteEntry(tarEntry, false);
        }
      }
     }
Run Code Online (Sandbox Code Playgroud)

我得到的是一个"myGz.tar.gz"文件.当我尝试用7.zip打开它时 - 我在存档中获得完整的文件夹结构--c:\ testfolder\test \,并在其中 - "test1","test".

如何删除文件路径?

谢谢

.net c# sharpziplib

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

如何获得两个词典的对称差异

我正在寻找一种解决方案来找到Python中两个字典之间的对称差异.

例如,如果我有两个字典A和B,并且我想创建第三个字典C,其中包含A和B中未在另一个中找到的所有项目,或者换句话说,唯一的.

我找不到规范的答案,所以我决定打开这个问题并给出我自己的答案.如果你认为你有更好的方法,我很乐意看到它.


一些数据:

a = {'a': 1, 'b':2}
b = {'b': 2, 'c':3}
Run Code Online (Sandbox Code Playgroud)

期望的输出:

{'a': 1, 'c': 3}
Run Code Online (Sandbox Code Playgroud)

python dictionary set python-2.7

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

设计after_sign_in_path_for有效,但重定向不会发生

设计不会重定向到提供的网址after_sign_in_path_for.它实际上调用我的自定义after_sign_in_path_for.它会计算我希望它计算的url,但之后不会发生重定向.它保留在sign_in页面上,但实际登录不会发生.

我一直在尝试几个版本的设计:

gem 'devise'
Run Code Online (Sandbox Code Playgroud)

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
Run Code Online (Sandbox Code Playgroud)

结果相同.

我的习惯 after_sign_in_path_for

def after_sign_in_path_for(resource)
    str = stored_location_for(resource) || stored_location || root_path
    debugger
    str
end

def stored_location
    session.delete(:return_to)
end

def store_location
    session[:return_to] = request.fullpath
end
Run Code Online (Sandbox Code Playgroud)

正在被调用,它提供了正确的URL,str完全按照我的预期给出.调试器此时停止...

但是在cont页面停留之后sign_in,然而登录仍在进行.

我相信这不是我的代码问题.这可能是一个设计问题.能有它工作的任何人都可以与我分享Devise的确切版本,它与你合作.

ruby-on-rails devise

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

查找提供的Sum值的组合

我有这样的一系列数字

myvar = [57, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186]
Run Code Online (Sandbox Code Playgroud)

现在我想计算所有这些可能的组合(长度为1到20),其总和等于给定的数字m.

我尝试使用以下代码解决:

def sum_count(m):    ## Where m is the sum required

    from itertools import combinations

    myseq = []
    for i in range(1,len(myvar)):
        mycomb = list(combinations(mass,i));  # Getting combinations of length i
        mycomb = [list(j) for j in mycomb];
        for j in range(len(mycomb)-1,-1,-1):
            if sum(mycomb[j]) == m:
                myseq.append(mycomb[j])

    return(myseq)
Run Code Online (Sandbox Code Playgroud)

当我放m = 270(例如)它给我:

[[114, 156], [57, 99, …
Run Code Online (Sandbox Code Playgroud)

python combinations function

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

从多个线程获得结果的更好方法

我想要做的是能够调用多个线程的函数并获得他们的结果.

我有以下代码:

(这是一个例子,实际代码不是简单地将str转换为int)

from threading import Thread
import time
import Queue

#an example - actual code connects to a server
def str_to_int(arg, queue):
    result = 0
    result = int(arg)
    #sleep to check that they happen at once.
    time.sleep(10)
    queue.put(result)

def combine():
    q1 = Queue.Queue()
    q2 = Queue.Queue()
    q3 = Queue.Queue()

    t1 = Thread(target = str_to_int, args=("111", q1))
    t2 = Thread(target = str_to_int, args=("222", q2))
    t3 = Thread(target = str_to_int, args=("333", q3))

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()

    return (q1.get(),q2.get(),q3.get())

print …
Run Code Online (Sandbox Code Playgroud)

python queue multithreading

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

如何理解python函数描述?

我是Python的初学者.

我不懂Python函数描述.例如,功能getopt

getopt.getopt(args, options[, long_options])
Run Code Online (Sandbox Code Playgroud)

什么options[, long_options]意思?

python

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

Python 2:在新显式列表定义中插入现有列表

这可能是不可能的,但如果是的话,我写的一些代码会很方便:

ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox', ListOne, 'lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我最终会将ListOne作为ListTwo中的一个列表.

但相反,我想将ListOne扩展为ListTwo,但我不想做以下事情:

ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox']
ListTwo.extend(ListOne)
ListTwo.extend(['lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)

这将有效,但它不像上面的代码那样可读.

这可能吗?

python list

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