小编Jas*_*ase的帖子

python元组和列表.一个拒绝转换的元组

我需要知道为什么这会失败:

class ConfigurationError(Exception):
    def __init__(self, *args):
        super(ConfigurationError, self).__init__(self, args)

        self.args = list(args)
        # Do some formatting on the message string stored in self.args[0]
        self.args[0]=self.__prettyfi(self.args[0])

    def __prettyfi(self, arg):
        pass
        # Actual function splits message at word
        # boundaries at pos rfind(arg[1:78]) if len(arg) >78
        # it does this by converting a whitespace char to a \n
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到以下消息: <snip> ConfigurationError.py", line 7, in __init__ self.args[0]=self.__prettyfi(self.args[0]) TypeError: 'tuple' object does not support item assignment

我编辑了第一行.匹配此代码示例.

我不明白为什么self.args = list(args)没有正确地将元组解压缩到第5行的列表中.

(我有一种潜行的怀疑,我没记得超基本的东西...)

python tuples list python-2.7 iterable-unpacking

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

取消分配准备好的查询

编辑:我感谢丹尼尔和丹尼斯.这个问题现在已经解决了,正如他们巧妙地指出的那样,这个案例中的问题是程序员(特别是没有考虑到这一点)我希望我能接受这两个作为答案.

注意:说我是postgresql的新手是侮辱新手!

我正在编写一个Web应用程序,它将利用PostgreSQL数据库进行数据存储.在我到目前为止所做的工作中,我已经很好地掌握了创建查询和从中检索结果的语法,无论是查找,删除,插入还是更新.然而,我遇到了一个窘境.

为避免SQL注入问题,建议使用pg_prepare()/pg_execute()pg_query_params推荐.我使用的pg_prepare()/pg_execute()比我更多.但每个查询都是一个4步过程,

  1. 准备查询字符串本身,
  2. 在db上准备查询(使用pg_prepare)
  3. 执行查询(pg_execute)
  4. 处理/操纵返回的数据.

因为这是一个PHP脚本,所以在脚本终止时不会自动释放准备好的查询,因此需要通过以下调用手动完成:

pg_query($dbconn, "DEALLOCATE 'query_name';")

但是,DEALLOCATESQL命令不返回有关成功或失败的有用信息,因此在尝试确定DEALLOCATE指令的结果时,尝试确定是否:

  1. 查询成功,重新分配也是如此
  2. 查询成功,解除分配失败
  3. 查询失败,重新分配也失败了
  4. 查询失败,重新分配成功(我不相信甚至会发生这种情况)

我的问题是双重的"

  1. 如何(禁止对服务器重复查询解除分配的查询)我可以确定解除分配是否成功,以及
  2. 是否有一种简单的方法可以确定查询的哪一部分失败(在发生故障的情况下)解除分配或发送查询本身?

这个问题提供了部分解决方案,但在找到错误的来源方面没有帮助.PHP/PostgreSQL:检查准备好的语句是否已经存在

php postgresql prepared-statement

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

编译器错误预期嵌套名称说明符

我是这个问题的OP:扩展一个我得到了很好答案的课程.但是,当我尝试编译代码(稍微为我的项目重做)时,我收到以下消息(行号改为反映以下示例代码):

except.h: | 09 | expected nested-name-specifier before ‘handler_t1’
Run Code Online (Sandbox Code Playgroud)

以及更多似乎源于这条线的东西.我是C++的新手,我对答案(以及即将出现的问题)的研究已经产生了这样一个事实:微软的编译器似乎接受了代码,但符合标准的编译器却没有.

我目前拥有的代码如下:

#include <vector>
namespace except
{
  // several other classes and functions which compile and work already
  // (tested and verified) have been snipped out. Entire code is over
  // 1000 lines.

  class Error_Handler
  {
    public:
      using handler_t1 = bool (*)(except::Logic const&);
      std::vector<handler_t1> logic_handlers;

      // a lot more removed because the error has already happened ...
  }
}
Run Code Online (Sandbox Code Playgroud)

阅读链接问题中的代码表明(我的知识有限)它应该都可以工作.

因此,我的问题是:我需要在此声明/定义中进行哪些更改才能使用gcc进行编译(使用-std = C++ 0x进行4.6.3 64位linux编译)?

c++ compiler-errors c++11 gcc4.6

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

wxPython背景图像在框架上

MMGP回答但不会让我信任他;-)所以我至少会在这里提到他.(我终于得到了他的信任...... 8-)

关于Double Buffering的链接讨论提供了一个基本代码,它具有以下修改:

在第106行插入此开头(覆盖现有代码,直到到达此处显示的最后一行):

    # Here's the actual drawing code.
    cliWidth, cliHeight = self.GetClientSize()
    bmp=wx.Bitmap("Logo16x9.png")
    bmpWide = bmp.GetWidth()
    bmpHeight = bmp.GetHeight()
    img = bmp.ConvertToImage()
    scaleFactor = cliWidth/bmpWide
    bmp = wx.BitmapFromImage(img.Scale(int(bmpWide * scaleFactor), int(bmpHeight * scaleFactor)))
    bmpWide = bmp.GetWidth()
    bmpHeight = bmp.GetHeight()
    xPos = (cliWidth - (bmpWide))/2
    yPos = (cliHeight - (bmpHeight))/2
    # altered by me
    dc.DrawBitmap(bmp, xPos, yPos)


class TestFrame(wx.Frame):
Run Code Online (Sandbox Code Playgroud)

我整天都在反对这一点.

我是使用wxPython模块绘制图形的新手,当我需要在框架上绘制背景图像时,我发现这个代码在图像是窗口的完整大小时效果很好.

但是,我需要将公司徽标作为背景,并通过调整大小保持居中.在它的当前形式中,调整大小会导致一个小的国家大小的图形工件在屏幕上显示任何调整大小事件.

徽标图像文件(在代码的第43行上使用)是400x300(WxH)图像.

我正在寻找一种方法:动态调整我的图像以匹配wx.GetClientSize(),或者一种避免/删除工件的方法.优选地,不涉及PIL或ImageMagick.应用程序必须仅在本地级别运行,并且与系统无关(Win,Lin和Mac),这些都不涉及网络活动或映射驱动器.

Python 2.7和wxPython 2.8

我正在使用的代码(带有我的修改注释)如下:

import wx

########################################################################
class MainPanel(wx.Panel): …
Run Code Online (Sandbox Code Playgroud)

python graphics wxpython bitmap python-2.7

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

python os.path.expanduser() 这总是正确的吗

解决方案:正如托马斯在下面指出的,我所承担的任务几乎是不可能实现的,并且数据必须是动态确定的,因为任何操作系统使用的模板结构都可以相当容易地被覆盖,而且永远没有办法以保证预先构建的模板能够正确应用。我感谢所有回复的人(即使我一开始就太笨了......):-P

我目前无法访问基于 Mac 或 Windows 的计算机,并且我正在开发一个跨平台项目(Win/Lin/Mac)。

在 Linux 上,从调用返回

os.path.expanduser('~')
Run Code Online (Sandbox Code Playgroud)

回报/home/<user>

现在,在任何操作系统中,$home 目录结构都包含所有路径共有的最后一个点(在我的 Linux 安装中,主路径是/home/<user>默认的,这是/home最后一个公共点)。

所以我的问题(目前我无法简单地测试)是这样的:在Windows和Mac上,除非进行一些不寻常的重新配置(软件产品适用于普通家庭用户和青少年),否则返回路径的最后部分始终是第一个非-公共路径部分?

(这个问题可以说得更清楚,但我对如何解释这一点感到困惑。这是重写三。)

编辑:阅读下面评论中 phihag 链接的文章后,我认为他要求更好地澄清我的预期用途(不可能的规范事情)。我想做的是确定返回的部分os.path.expanduser('~'),我可以将其转换为新相对路径定义的第一部分,然后我可以从中创建更多目录结构,这些目录结构是针对每个用户的应用程序的。相当于/home/<user>/.config/<MyAppHere>\Documents and Settings\<user>\Application Data\Roaming\<MyAppHere>。我的最终结果将使用(如果可以确定这个问题符合我的意图)以下内容:

# Assumes linux system and home path of /home/<user
head, tail = os.path.split(os.path.expanduser('~'))
userConfigPath = os.path.join(tail,'.config',MYAPPNAME)

# userConfigPath then gets written to a config file which is used by the program
# to determine where (within a greater structure) to look for a user based
# …
Run Code Online (Sandbox Code Playgroud)

python windows macos python-2.7

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

python不确定地确定系统PATH系统

我正在编写的程序需要确定系统上是否安装了某些其他程序.特别是命令行程序,用于生成哈希值.由于这些程序有很多可能的版本,我需要检查主要的程序(md5,漩涡等).

我正在编写的程序是系统无关的,并且意味着可以在任何win/mac/*nix上运行.

我希望能够快速搜索操作系统的标准$ PATH,但我不知道如何从系统到系统检索该信息($ PATH的内容).

这里的搜索仅显示了查找python路径或当前运行脚本的路径的内容.

有人会有解决方案,或者能够指出我跨平台解决方案吗?

python operating-system path environment-variables python-2.7

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