小编got*_*nes的帖子

确定列表是否是Python上的目录或文件

Python有一个标准的库模块ftplib来运行FTP通信.它有两种获取目录内容列表的方法.一,FTP.nlst()将返回给定目录名作为参数的目录内容列表.(如果给定文件名,它将返回文件的名称.)这是一种列出目录内容的可靠方法,但不会指示列表中的每个项目是文件还是目录.另一种方法是FTP.dir(),它给出了作为参数给出的目录的目录内容的字符串格式列表(或给定文件名的文件属性).

根据之前关于Stack Overflow的问题,解析结果dir()可能很脆弱(不同的服务器可能会返回不同的字符串).我正在寻找一些方法来列出通过FTP在另一个目录中包含的目录.据我所知,d在字符串的权限部分中抓取一个是我提出的唯一解决方案,但我想我无法保证权限将出现在不同服务器之间的同一位置.是否有更强大的解决方案来识别FTP上的目录?

python ftp

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

从Beamer页脚中删除幻灯片计数

我想SLIDE_NUMBER / TOTAL_SLIDES从Beamer演示文稿的页脚(footline)中删除幻灯片计数(例如),而不是完全删除页脚.我正在使用Boadilla主题,它使用infolines外部主题.在beamerouterthemeinfolines.sty文件中,我们找到了以下脚线的定义:

\defbeamertemplate*{footline}{infolines theme}
{
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
\usebeamerfont{author in head/foot}\insertshortauthor~~(\insertshortinstitute)
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
\usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
\usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}
\insertframenumber{} / \inserttotalframenumber\hspace*{2ex} 
  \end{beamercolorbox}}%
  \vskip0pt%
}
Run Code Online (Sandbox Code Playgroud)

我需要基本上重新定义这个外部主题,使其没有内部主题\insertframenumber{} / \inserttotalframenumber\hspace*{2ex},或者以其他方式定义一个新的外部主题,继承infolines主题中的所有其他主题.我怎样才能做到这一点?

相关问题:如何删除LaTeX Beamer模板的页脚?

latex beamer

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

如何使用python和Matplotlib更新绘图

我一直在靠墙试图用matplotlib和python和wxpython更新图形.我想按一个按钮并将数据添加到嵌套在wx.notebook中的图形.下面是代码.

谢谢您的帮助

import wx
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas

class Plot(wx.Panel):
    def __init__(self, parent, id = -1, dpi = None, **kwargs):
        wx.Panel.__init__(self, parent, id=id, **kwargs)
        self.figure = mpl.figure.Figure(dpi=dpi, figsize=(2,2))
        self.canvas = Canvas(self, -1, self.figure)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.canvas,1,wx.EXPAND)
        self.SetSizer(sizer)

class JBC(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(600,600))
        self.SetBackgroundColour(wx.Colour(236, 233, 216))

        self.nbG = wx.Notebook(self, -1, style=0, size=(400,400), pos=(0,0))       
        self.gSheet1 = self.add("Test").gca()

        calcButton = wx.Button(self, wx.NewId(), "Update", pos=(0, self.nbG.Position.y+400)) …
Run Code Online (Sandbox Code Playgroud)

python wxpython matplotlib

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

无法覆盖Cython扩展的类的__init__

我正在尝试子类化pysam的Tabixfile类并在实例化时添加其他属性.

class MyTabixfile(pysam.Tabixfile):

    def __init__(self, filename, mode='r', *args, **kwargs):
        super().__init__(filename, mode=mode, *args, **kwargs)
        self.x = 'foo'
Run Code Online (Sandbox Code Playgroud)

当我尝试实例化我的MyTabixfile子类时,我得到一个TypeError: object.__init__() takes no parameters:

>>> mt = MyTabixfile('actn2-oligos-forward.tsv.gz')
Traceback (most recent call last):
  File "<ipython-input-11-553015ac7d43>", line 1, in <module>
    mt = MyTabixfile('actn2-oligos-forward.tsv.gz')
  File "mytabix.py", line 4, in __init__
    super().__init__(filename, mode=mode, *args, **kwargs)
TypeError: object.__init__() takes no parameters
Run Code Online (Sandbox Code Playgroud)

我也尝试Tabixfile显式调用构造函数:

class MyTabixfile(pysam.Tabixfile):

    def __init__(self, filename, mode='r', *args, **kwargs):
        pysam.Tabixfile.__init__(self, filename, mode=mode, *args, **kwargs)
        self.x = 'foo' …
Run Code Online (Sandbox Code Playgroud)

python inheritance cython

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

如何阻止Django应用程序执行系统调用执行任意命令?

我有一个我正在开发的Django应用程序,它必须对服务器上的外部程序进行系统调用.在为系统调用创建命令时,应用程序从表单中获取值并将其用作调用的参数.我想这意味着一个人基本上可以使用伪参数并为shell执行任意命令来执行(例如,只需放置一个分号然后rm -rf *).

这是不好的.虽然大多数用户不是恶意的,但这是一个潜在的安全问题.如何处理这些潜在的利用点?

编辑(澄清):用户将看到一个表格,其中包含每个参数和选项的各种字段.但是,某些字段将作为打开文本字段提供.所有这些字段都合并并送入subprocess.check_call().但从技术上讲,这并不仅仅是将用户的命令提示交给用户.这必须相当普遍,所以其他开发人员如何清理输入以便他们不会得到Bobby Tables.

python security django

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

Python函数调用正在放弃范围,有状态,无法初始化参数?

在我大胆地提交错误报告之前,我想我会在这里用更聪明的Pythonistas检查我的假设.我今天遇到了一个令人困惑的案例,所以我把它改成了一个玩具示例,如下所示:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

"""
A little script to demonstrate that a function won't re-initialize its
list parameters between calls, but instead allows them to retain state.

"""

def bleedscope(a=[], b=[]):
    """
    On each call, unless explicitly passed, both `a` and `b` should be
    initialized as empty lists.

    """

    c = a
    if b:
        c.extend(b)
    return len(c)


x = bleedscope(b=[1])
print x     # Should be 1, as expected.
x = bleedscope(b=[2])
print x     # Expect also …
Run Code Online (Sandbox Code Playgroud)

python scope

5
推荐指数
3
解决办法
935
查看次数

如何在Autotools中添加和实现配置标志?

我们研究小组的一部分程序具有ctemplate库提供的辅助功能.在我们过时的集群中,我们无法通过编译来构建软件,因此我想将此功能分开并通过configure标志来控制它是否包含在内,例如--disable-ctemplate.

这个用C++编写的软件使用的是Autotools构建系统 - 我都没有这方面的经验.我的理解是,要完成这项任务,我需要做以下事情:

  1. 通过在中创建新AC_ARG_ENABLE条目,在configure脚本中添加新标志configure.ac.

  2. 在使用该库的代码周围添加一些#ifdef(或可能#ifndef)语句ctemplate,并围绕调用该代码的任何代码.

我认为第一步看起来像这样:

AC_ARG_ENABLE(ctemplate,
[  --disable-ctemplate    Disable HTML output],
[case "${enableval}" in
  yes) ctemplate=false ;;
  no)  ctemplate=true ;;
  *) AC_MSG_ERROR(bad value ${enableval} for --disable-ctemplate) ;;
esac],[ctemplate=true])
AM_CONDITIONAL(NOCTEMPLATE, test x$ctemplate = xfalse)
Run Code Online (Sandbox Code Playgroud)

虽然我不知道逻辑是否正确,因为我已经从使用的示例改编了这个例子--enable-FLAG而不是--disable-FLAG.

对于第二步,我将在预处理器标志中包含部分,例如

#ifndef NOCTEMPLATE
void Class::MethodUsingCtemplate(...)
{
    ...
}
#endif
Run Code Online (Sandbox Code Playgroud)

如果我这样做,这会正确"连接"所有内容configure --disable-ctemplate吗?

另外,这是否会确保程序不会进入ctemplate库进行编译?如果没有,那么所有这一切都是徒劳的; 我必须阻止编译ctemplate库和依赖组件.

我会重复一遍,我不熟悉C++和Autotools; 我已经采取了一种非常天真的第一种方法来解决这个问题.如果您有这方面的经验,我将非常感谢您的更正和您可以提供的任何解释.

configuration build-process autotools

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

使用pyparsing解析单词escape-split over multiple lines

我正在尝试\\n使用pyparsing解析可以使用反斜杠 - 换行符组合(" ")在多行中分解的单词.这就是我所做的:

from pyparsing import *

continued_ending = Literal('\\') + lineEnd
word = Word(alphas)
split_word = word + Suppress(continued_ending)
multi_line_word = Forward()
multi_line_word << (word | (split_word + multi_line_word))

print multi_line_word.parseString(
'''super\\
cali\\
fragi\\
listic''')
Run Code Online (Sandbox Code Playgroud)

我得到的输出是['super'],而预期的输出是['super', 'cali', fragi', 'listic'].更好的是他们所有人都加入了一个词(我想我可以这样做)multi_line_word.parseAction(lambda t: ''.join(t)).

我尝试在pyparsing helper中查看此代码,但它给了我一个错误,maximum recursion depth exceeded.

编辑2009-11-15:后来我意识到pyparsing在空白方面有点慷慨,这导致一些不好的假设,我认为我正在解析的是松散的.也就是说,我们希望在单词的任何部分,转义和EOL字符之间看不到空格.

我意识到上面的小例子字符串不足以作为测试用例,所以我编写了以下单元测试.通过这些测试的代码应该能够匹配我直观地认为是一个逃避分裂词 - 而且只是一个逃避分裂词.它们不匹配不是转义拆分的基本单词.我们可以 - 我相信应该 - 使用不同的语法结构.这使两者分开保持整洁.

import unittest
import pyparsing

# …
Run Code Online (Sandbox Code Playgroud)

python parsing pyparsing

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

使用Py ++生成的代码作为Python扩展

我需要包装一个现有的C++库以便在Python中使用.在阅读了关于选择适当的方法来包装C++以便在Python中使用的答案之后,我决定使用Py ++.

我使用教程文件浏览了Py ++教程,我得到了预期的输出generated.cpp,但是我还没想出要做什么才能真正使用生成的代码作为我可以在Python中导入的扩展.我确定我现在必须编译代码,但是用什么?我应该使用bjam吗?

c++ python word-wrap py++

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

Python的super(),抽象基类和NotImplementedError

抽象基类在Python中仍然可以派上用场.在编写一个抽象基类,我希望每个子类都有一个spam()方法,我想写这样的东西:

class Abstract(object):
    def spam(self):
        raise NotImplementedError
Run Code Online (Sandbox Code Playgroud)

挑战还包括想要使用super(),并通过将其包含在整个子类链中来正确地完成.在这种情况下,似乎我必须super包括如下所示的每个调用:

class Useful(Abstract):
    def spam(self):
        try:
            super(Useful, self).spam()
        except NotImplementedError, e:
            pass
        print("It's okay.")
Run Code Online (Sandbox Code Playgroud)

这对于一个简单的子类来说没问题,但是当编写一个有很多方法的类时,try-except会变得有点麻烦,而且有点难看.是否有更优雅的抽象基类子类化方法?我只是做错吗?

python abstract-class super

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