小编Ube*_*per的帖子

将Dictionary的String表示形式转换为字典?

如何将a的str表示形式(dict如下面的字符串)转换为dict

s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
Run Code Online (Sandbox Code Playgroud)

我不喜欢用eval.我还能用什么?

这样做的主要原因是我写的一个同事课程,将所有输入转换为字符串.我没心情去修改他的课程来处理这个问题.

python string dictionary

719
推荐指数
10
解决办法
75万
查看次数

*args和**kwargs是什么意思?

究竟是什么*args**kwargs意味着什么呢?

根据Python文档,从它看来,它传递了一个参数元组.

def foo(hello, *args):
    print hello

    for each in args:
        print each

if __name__ == '__main__':
    foo("LOVE", ["lol", "lololol"])
Run Code Online (Sandbox Code Playgroud)

打印出:

LOVE
['lol', 'lololol']
Run Code Online (Sandbox Code Playgroud)

你如何有效地使用它们?

python

267
推荐指数
5
解决办法
15万
查看次数

Python异常的最佳实践?

创建例外的最佳做法是什么?我刚看到这个,我不知道我是否应该感到恐惧或喜欢它.我在书中多次阅读异常永远不会持有字符串,因为字符串本身可以抛出异常.这有什么真相吗?

基本上我从脚本的理解是这样做,所以所有内部Python库将有一个共同的错误消息格式(迫切需要的东西)所以我可以理解为什么把错误消息字符串是一个好主意.(几乎每种方法都会抛出异常,因为完全不需要无效的通过).

有问题的代码如下:

"""
Base Exception, Error
"""
class Error(Exception):
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return "[ERROR] %s\n" % str(self.message)

    def log(self):
        ret = "%s" % str(self.message)
        if(hasattr(self, "reason")):
            return "".join([ret, "\n==> %s" % str(self.reason)])
        return ret

class PCSException(Error):
    def __init__(self, message, reason = None):
        self.message = message
        self.reason = reason
    def __str__(self):
        ret = "[PCS_ERROR] %s\n" % str(self.message)
        if(self.reason != None):
            ret += "[REASON] %s\n" % str(self.reason)
        return ret
Run Code Online (Sandbox Code Playgroud)

这只是冰山一角,但有人可以给我一些洞察力,这是一个什么使这个可怕的想法?或者,如果有一个更好的异常编码过程/风格.

python exception

60
推荐指数
4
解决办法
4万
查看次数

让python迭代器倒退?

反正有没有让python列表迭代器倒退?

基本上我有这个

class IterTest(object):
    def __init__(self, data):
        self.data = data
        self.__iter = None

    def all(self):
        self.__iter = iter(self.data)
        for each in self.__iter:
            mtd = getattr(self, type(each).__name__)
            mtd(each)

    def str(self, item):
        print item

        next = self.__iter.next()
        while isinstance(next, int):
            print next
            next = self.__iter.next()

    def int(self, item):
        print "Crap i skipped C"

if __name__ == '__main__':
    test = IterTest(['a', 1, 2,3,'c', 17])
    test.all()
Run Code Online (Sandbox Code Playgroud)

运行此代码会产生输出:

a
1
2
3
Crap i skipped C
Run Code Online (Sandbox Code Playgroud)

我知道为什么它给了我输出,但是有一种方法我可以在str()方法中向后退一步吗?

编辑

好吧也许可以让这个更清楚.我不想做完全反向,基本上我想知道是否有一种简单的方法在python中做相当于双向迭代器?

python iterator list

25
推荐指数
2
解决办法
4万
查看次数

如何在Python循环中跳过当前项和下一项?

这可能是一个非常愚蠢的问题,但我在网上看了等等.并没有看到一个可靠的答案.

有没有一种简单的方法来做这样的事情?

lines = open('something.txt', 'r').readlines()
for line in lines:
    if line == '!':
        # force iteration forward twice
        line.next().next()
    <etc>
Run Code Online (Sandbox Code Playgroud)

在C++中很容易做到; 只需将迭代器增加一个额外的时间.在Python中有没有一种简单的方法可以做到这一点?

我只想指出,这个问题的主要目的不是"阅读文件等"和跳过事情.我更喜欢C++迭代器样式迭代.新标题也有点愚蠢,我真的不认为它反映了我的问题的本质.

python

23
推荐指数
3
解决办法
6万
查看次数

使功能无法覆盖

我知道python函数默认是虚拟的.假设我有这个:

class Foo:
    def __init__(self, args):
        do some stuff
    def goo():
        print "You can overload me"
    def roo():
        print "You cannot overload me"
Run Code Online (Sandbox Code Playgroud)

我不希望他们能够做到这一点:

class Aoo(Foo):
    def roo():
        print "I don't want you to be able to do this"
Run Code Online (Sandbox Code Playgroud)

有没有办法防止用户超载roo()?

python

16
推荐指数
4
解决办法
3656
查看次数

创建自己的HRESULT?

我已经有一个项目使用了很多COM和HRESULTS.我想知道是否有可能定义你自己的HRESULT,并且能够将FormatMessage()用于我们自己的HRESULT?

我四处乱窜,无法找到任何东西.有任何想法吗?

编辑

基本上我想定义一组我自己的HRESULT,而不是只返回E_FAIL.或者其他通用的.像E_FAIL一样好.但是,我想说,我想指出,例如地理处理子系统崩溃或文件是无效的光栅图像.该应用程序已经通过它使用com.

c++ com hresult

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

从Python中解析Python代码?

我们有一个较旧的C++工具,可以自动生成一些python代码.我今天试图通过C++源码工具,并且非常想拍摄自己.我想做的就是清理工具创建的源代码,并通过添加sphinx标签将类链接到我们的内部文档系统.

现在我想知道是否有一些在python中解析python代码的奇妙工具?

有很多像这样的东西:

foo._methods_.append()

Snip 500 lines

foo._methods_.append()
Run Code Online (Sandbox Code Playgroud)

有什么建议?

基本上我有一个功能但疯狂凌乱的代码结构,我基本上想要提取某些块,将它们移动到自己的文件.并清理所有创造的杂乱的东西.

我在解析器和AST上看了一下quickyl,但我找不到任何使用它的真实例子.

python

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

TimedRotatingFileHandler更改文件名?

我正在尝试实现名为TimedRotatingFileHandler的python日志记录处理程序.

当它翻到午夜时,它将以当前日期的形式添加:"YYYY-MM-DD".

LOGGING_MSG_FORMAT  = '%(name)-14s > [%(levelname)s] [%(asctime)s] : %(message)s'
LOGGING_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'

logging.basicConfig(
            level=logging.DEBUG,
            format=LOGGING_MSG_FORMAT,
            datefmt=LOGGING_DATE_FORMAT
            )
root_logger = logging.getLogger('')
logger = logging.handlers.TimedRotatingFileHandler("C:\\logs\\Rotate_Test",'midnight',1)
root_logger.addHandler(logger)
while True:
    daemon_logger = logging.getLogger('TEST')
    daemon_logger.info("SDFKLDSKLFFJKLSDD")
    time.sleep(60)
Run Code Online (Sandbox Code Playgroud)

创建的第一个日志文件仅称为"Rotate_Test",然后一旦翻转到第二天,它将文件名更改为:"Rotate_Test.YYYY-MM-DD"其中YYYY-MM-DD是当前日期.

我怎样才能改变它改变文件名的方式?我用Google搜索并查看了API,几乎找不到任何东西.

python logging

15
推荐指数
3
解决办法
2万
查看次数

ftplib检查文件是否是文件夹?

如何使用ftplib检查远程ftp上的文件是否是文件夹?

我现在最好的方法是做一个nlst,并遍历每个文件的调用大小,如果文件出错那么它是一个文件夹?

有没有更好的办法?我无法解析列表的输出,因为有大约十几个不同的ftp服务器(很多很老.)

我该怎么办?

python ftp ftplib

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

标签 统计

python ×9

c++ ×1

com ×1

dictionary ×1

exception ×1

ftp ×1

ftplib ×1

hresult ×1

iterator ×1

list ×1

logging ×1

string ×1