小编Puz*_*d79的帖子

SQLite的Python轻量级数据库包装器

Python中是否有可用于SQLite的轻量级数据库包装器.我想像Django的ORM,但我可以指向一个数据库文件,它将为我创建所需的API(即处理所有的CRUD).

python sqlite

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

在Python中处理项目脚本中的路径/可执行文件的最佳实践(例如Django的manage.py或fabric)

我在一个相当标准化的目录结构中对不同的项目(我是一名科学家)做了很多工作.例如:

project
   /analyses/
   /lib
   /doc
   /results
   /bin
Run Code Online (Sandbox Code Playgroud)

我将所有各种实用程序脚本放在/ bin /中,因为清洁度与敬虔相关.但是,我必须硬编码路径(例如../../x/y/z)然后我必须在./bin/中运行它们或者它们会中断.

我已经使用了Django,它有/manage.py运行各种django-things并自动处理路径.我还使用了fabric来运行各种用户定义的函数.

问题:我该如何做类似的事情?什么是最好的方式?我可以很容易地在/manage.py中写一些内容来将root目录注入sys.path等,但是我希望能够执行"./manage.py foo"运行/bin/foo.py.或者是否可以让Fabric从某个目录中调用可执行文件?

基本上 - 我想要一些简单和低维护的东西.我希望能够将可执行脚本/文件/删除到./bin/中,而不必处理路径问题或导入问题.

做这个的最好方式是什么?

python fabric

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

与os.path.commonprefix相反

os.path.commonprefix的反义词是什么?我有两条路径,我想要非重叠路径,例如:

>>> p1 = '/Users/foo/something'
>>> p2 = '/Users/foo/something/else/etc'
>>> print somefunction([p1, p2])
'/else/etc'
Run Code Online (Sandbox Code Playgroud)

python path

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

在python中验证文件名

我正在用Python编写一个个人wiki风格的程序,它将文本文件存储在用户可配置的目录中.

该程序应该能够foo从用户获取一个字符串(例如)并创建一个文件名foo.txt.用户只能在wiki目录中创建文件,斜杠将创建一个子目录(例如,foo/bar变为(path-to-wiki)/foo/bar.txt).

检查输入是否尽可能安全的最佳方法是什么?我需要注意什么?我知道一些常见的陷阱是:

  • 目录遍历: ../
  • 空字节: \0

我意识到获取文件名的用户输入绝不是100%安全,但程序只能在本地运行,我只是想保护任何常见的错误/故障.

python filenames

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

太平洋地图与填充国家

我正试图在R的mapproj图书馆中使用World2Hires绘制太平洋地图,但是当我试图填补这些国家时,这是一个奇怪的故障.我该如何解决?

library(maps)
library(mapproj)
library(mapdata)
map("world2Hires", 
    xlim=c(120, 260), 
    ylim=c(-60, 40), 
    boundary=TRUE, 
    interior=TRUE,
    fill=TRUE,
    col="gray30",
)
map.axes()
Run Code Online (Sandbox Code Playgroud)

这是输出:

破碎的地图图像

r map

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

带引用文件的pandoc的Makefile

我正在尝试为pandoc编写一个Makefile.我希望能够键入make filename.ext,Makefile将自动编译filename.txtfilename.ext.文件名可以是任何名为.txt的文件名.这部分很容易.例如,我有一套规则,如:

%.pdf: %.txt
    pandoc -s --smart -f markdown -o $@ $<

%.html: %.txt
    pandoc -s --smart --bibliography $(bib) -f markdown -t html --standalone -o $@ $<

%.docx: %.txt
    pandoc -s --smart --bibliography references.bib -f markdown -t docx -o $@ $<

%.tex: %.txt
    pandoc -s --smart --bibliography references.bib -o $@ $<
Run Code Online (Sandbox Code Playgroud)

但是,我还想从同一个文件中添加引文filename.bib.因此,如果我键入make fudge.pdf,pandoc会将fudge.txt转换为fudge.pdf,同时合并来自fudge.bib的bibtex引用.我该怎么做呢?命令行就像

pandoc -s --smart --bibliography filename.bib -f markdown -o $@ $<
Run Code Online (Sandbox Code Playgroud)

...但我无法弄清楚如何从fudge.txt获取fudge.bib而不做这样的事情:

pandoc -s --smart --bibliography $(subst .txt,.bib,$<) …
Run Code Online (Sandbox Code Playgroud)

makefile pandoc

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

python单元测试多个mixin

我正在尝试编写一种测试某些 XML 文件的方法。XML 文件描述了科学分析程序的输入,其中可以定义各种参数。我想为我的 XML 文件编写单元测试,以便我知道程序配置正确。

我目前正在将其作为一个库来执行,其中包含一个基本测试类,其中包含各种测试和一些子组件的混合。但是子组件会重复多次,所以我希望测试为每个 mixin 运行一次,例如:

class BaseTest(object):
    xmlfile = '...'
    ...

class ComponentMixin(object):
    xmlid = None   # 
    var = None     # 

    def test_var(self):
        assert self.var == "whatever_the_value_is_in self.xmlfile"
    # ... and a number of other tests and variables.
Run Code Online (Sandbox Code Playgroud)

...现在,对于每个分析,可以有许多使用不同参数定义的组件。我希望能做这样的事情——

 class MyFirstComponentMixin(ComponentMixin):
      xmlid = 'component1'
      var = 'one'

 class MySecondComponentMixin(ComponentMixin):
      xmlid = 'component2'
      var = 'two'

 class MyTest(BaseTest, MyFirstComponentMixin, MySecondComponentMixin, unittest.TestCase):
      xmlfile = '...'
Run Code Online (Sandbox Code Playgroud)

...但问题是 test_var 只会被 component2 调用,而不会被 component2 调用。有没有办法解决这个问题,或者有更好的解决方案?

python xml unit-testing

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

Python“非规范化”unicode 组合字符

我正在寻找标准化 python 中的一些 unicode 文本。我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的“非规范化”形式?例如,如果我有序列u'o\\xaf'(即latin small letter o后跟combining macron),则得到 \xc5\x8d ( latin small letter o with macron)。很容易走另一条路:

\n
o = unicodedata.lookup("LATIN SMALL LETTER O WITH MACRON")\no = unicodedata.normalize('NFD', o)\n
Run Code Online (Sandbox Code Playgroud)\n

python unicode

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

Django 内联表单集通过 ManyToMany 编辑一个值

我正在尝试制作一个表单来编辑其父模型中 ManyToMany 字段的值。作为一个例子,我有类似于这三个模型的东西:

class Language(models.Model):
    label = models.CharField()


class Word(models.Model):
    language = models.ForeignKey(Language)
    word = models.CharField()
    entries = models.ManyToManyField(Entries, null=True, blank=True)


class Entries(models.Model):
    entry = models.CharField()
Run Code Online (Sandbox Code Playgroud)

每种语言大约有 50 个单词。每个单词都有一个或两个条目。

我正在生成表单集来编辑给定语言的条目,如下所示:

class WordForm(forms.ModelForm):
    class Meta:
        model = Word
        hidden = ('language', )

PronounFormSet = inlineformset_factory(Language, Word,
         can_delete=False, extra=0, form=WordForm)
Run Code Online (Sandbox Code Playgroud)

这给了我一个<select>允许我添加/删除 Word.entries 的条目。但是,我想允许用户直接编辑字段 Entries.entry (即该字段Entries.entry应该位于 CharField() 中。如何修改我的 WordForm 以允许这样做?

我知道可能有更好的方法来做到这一点(例如不同的数据库模式),但我受到遗留实现的严重限制。

forms django

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

Makefile 处理一个目录中的所有文件,输出到另一个目录。

如何设置 Makefile 来处理一个目录中的所有文件,将输出重定向到另一个(每个输入文件一个输出文件)?我有:

INPUTS := $(wildcard ./input/*.txt)
OUTPUTS := $(patsubst %.out,%.txt,$(wildcard ./input/*.txt))

$(OUTPUTS): $(INPUTS)
    python process.py $@ > ./output/${@:%.txt=%.out}
Run Code Online (Sandbox Code Playgroud)

...但它不断在 ./output 中重新生成已经存在的文件。

makefile

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

标签 统计

python ×6

makefile ×2

django ×1

fabric ×1

filenames ×1

forms ×1

map ×1

pandoc ×1

path ×1

r ×1

sqlite ×1

unicode ×1

unit-testing ×1

xml ×1