小编mar*_*r10的帖子

在Python中打开文件进行独占访问的最佳方法是什么?

解决这个问题最优雅的方法是什么:

  • 打开一个文件进行阅读,但前提是它尚未打开才能写入
  • 打开文件进行写入,但前提是它尚未打开进行读写

内置函数的工作方式如下

>>> path = r"c:\scr.txt"
>>> file1 = open(path, "w")
>>> print file1
<open file 'c:\scr.txt', mode 'w' at 0x019F88D8>
>>> file2 = open(path, "w")
>>> print file2
<open file 'c:\scr.txt', mode 'w' at 0x02332188>
>>> file1.write("111")
>>> file2.write("222")
>>> file1.close()
Run Code Online (Sandbox Code Playgroud)

scr.txt现在包含'111'.

>>> file2.close()
Run Code Online (Sandbox Code Playgroud)

scr.txt被覆盖,现在包含'222'(在Windows上,Python 2.4).

解决方案应该在同一个进程中工作(如上例所示)以及另一个进程打开文件时.
如果崩溃程序不能保持锁定打开,则是首选.

python locking file

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

分发需要最小Python版本的Python包的最佳方法是什么

我有一个需要Python 2.4或更高版本的Python 2项目('foo 0.1.7').

现在我将它移植到Python 3('foo 0.2.0'),它仍然与Python 2兼容,但现在要求已经提升到Python 2.6或更高版本.

  • 我知道有一个--target-version=2.6setup.py 的选项,可以使用upload,但这似乎不是'2.6或更高'
  • setup命令有一个install_requires选项,但这是针对所需的包,而不是Python解释器.

我可以在'foo 0.2.0'的setup.py中做类似的事情:

if sys.hexversion < 0x02060000:
    raise RuntimeError('This package requires Python 2.6 or later, try foo 0.1.7')
Run Code Online (Sandbox Code Playgroud)

但我希望easy_install foo能以某种方式解决这个问题.

那么,我应该如何在PyPI上部署它呢?

python setuptools pypi

11
推荐指数
1
解决办法
845
查看次数

如何在Windows上为Python 2.4和2.5版本设置virtualenv环境?

我安装了这个

  • 在Windows 7上
  • Python 2.7.6(我的默认设置,安装了virtualenv)
  • Python 2.4.4
  • Python 2.5.4
  • Python 2.6.6
  • Python 3.3.3
  • virtualenv 1.10.1

我想在所有这些python安装上测试代码.

(类似的问题在Windows使用virtualenv -p(和virtualenvwrapper-win)的多个python版本没有回答这个问题.)

这是我到目前为止所尝试的:

Python 2.4给出了语法错误(创建了一个环境,但安装了PY27!):

>virtualenv -p c:\apps\Python24\python.exe env24_v
Running virtualenv with interpreter c:\apps\Python24\python.exe
  File "C:\apps\Python27\lib\site-packages\virtualenv.py", line 1508
    cp_or_ln = (os.symlink if symlink else copyfile)
                            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

显然不支持Python 2.5(没有创建环境):

C:\Users\martin>virtualenv -p c:\apps\Python25\python.exe env25
Running virtualenv with interpreter c:\apps\Python25\python.exe
ERROR: None
ERROR: this script requires Python 2.6 or greater.
Run Code Online (Sandbox Code Playgroud)

Python 2.6按预期工作:

C:\Users\martin\.virtualenvs>virtualenv -p c:\apps\Python26\python.exe env26
Running virtualenv with interpreter …
Run Code Online (Sandbox Code Playgroud)

python windows virtualenv python-2.4 python-2.5

7
推荐指数
1
解决办法
3485
查看次数

使用Mercurial从不相关的存储库合并提示

我有两个不相关的存储库'public'和'develop':

prj/
  public/
  develop/
Run Code Online (Sandbox Code Playgroud)

'develop'有很多提交,因为这是我工作的地方.甚至可能是多个脑袋我不时会发布开发资料库的快照.

从公共文件夹我可以这样做:

>hg pull -f ../develop
>hg merge
>hg commit -m "alpha2"
Run Code Online (Sandbox Code Playgroud)

但这也将完整的变革集历史从"发展"转变为"公共"(这不是我想要的).

我也可以删除'public'中的所有文件,除了'.hg'子文件夹.然后手动复制'develop'目录中的所有文件并执行

>hg commit -m "alpha2"
Run Code Online (Sandbox Code Playgroud)

但后来我必须'添加'新文件,'删除'过时文件并'重命名'再次移动文件.

使用-A带有提交的选项会盲目地添加/删除所有文件,即使它们在"开发"存储库中不受控制.

必须有一个更有效的方法来做到这一点;-)

merge mercurial

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

ContextMenu与jQuery FullCalendar集成

我正在使用Adam Shaw的FullCalendar控件以及jQuery.我想为事件和日子添加一个上下文菜单.通过使用Martin Wendt的Context Menu控件,我能够实现这一目标.我在事件上注册菜单的代码如下所示:

$('#calendar').fullCalendar({
        // Other arguments
        eventRender: function (event, element) {
            var originalClass = element[0].className;
            element[0].className = originalClass + ' hasmenu';
        },
        dayRender: function (day, cell) {
            var originalClass = cell[0].className;
            cell[0].className = originalClass + ' hasmenu';
    });
});
Run Code Online (Sandbox Code Playgroud)

我实际上是hasmenu在日历中添加一个调用每个事件和日期的类.

$(document).contextmenu({
    delegate: ".hasmenu",
    preventContextMenuForPopup: true,
    preventSelect: true,
    menu: [
            {title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors"},
            {title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy"},
            {title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true },
        ],
    select: …
Run Code Online (Sandbox Code Playgroud)

css asp.net jquery fullcalendar jquery-ui-contextmenu

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

jquery-ui菜单作为上下文菜单

右键单击时,如何使用http://jqueryui.com/menu/作为上下文菜单。有插件吗?

的jquery-1.9.0 jquery-ui-1.10.0

jquery jquery-ui jquery-ui-contextmenu

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