我正在使用此代码从外部程序获取标准输出:
>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]
Run Code Online (Sandbox Code Playgroud)
communic()方法返回一个字节数组:
>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Run Code Online (Sandbox Code Playgroud)
但是,我想将输出作为普通的Python字符串.所以我可以这样打印:
>>> print(command_stdout)
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
Run Code Online (Sandbox Code Playgroud)
我认为这是binascii.b2a_qp()方法的用途,但是当我尝试它时,我又得到了相同的字节数组:
>>> binascii.b2a_qp(command_stdout)
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Run Code Online (Sandbox Code Playgroud)
有人知道如何将字节值转换回字符串吗?我的意思是,使用"电池"而不是手动操作.而且我希望它能用于Python 3.
我希望我的AltGr键表现得像左派一样Alt.
通常,我使用Autohotkey做这种事情,但我对不同的解决方案持开放态度.
我试过这个:
LControl & RAlt::Alt
Run Code Online (Sandbox Code Playgroud)
并且Autohotkey显示有关Alt
未被识别的操作的错误.
然后我尝试了以下代码:
LControl & RAlt::
Send {Alt down}
KeyWait LCtrl
KeyWait Ralt
Send {Alt up}
return
Run Code Online (Sandbox Code Playgroud)
哪种工作 - 我能够使用AltGr密钥访问热键,但它仍然表现不同:
当我按下并释放左侧时Alt,当前程序中的第一个菜单项获得焦点.使用此脚本
按下和释放AltGr不会执行任何操作.
有任何想法吗?Autohotkey甚至可以实现这一点吗?(重新映射右边Ctrl和Shift他们的左边兄弟姐妹是小菜一碟)
Alt
到LAlt
没有区别. 我想将DataGridView控件用作列的列表.在详细信息模式下类似ListView,但我想保持DataGridView的灵活性.
ListView(启用详细信息视图和FullRowSelect)突出显示整行并显示整行的焦点标记:
DataGridView(使用SelectionMode = FullRowSelect)仅在单个单元格周围显示焦点标记:
那么,有没有人知道一些(理想情况下)使DataGridView行选择看起来像ListView的简单方法?
我不是在寻找控件的改变行为 - 我只希望它看起来一样.
理想情况下,不要搞砸实际绘画的方法.
我想用Python做一些服务器端脚本.但是我有很多方法可以做到这一点.
它从自己动手的CGI方法开始,似乎以一些非常强大的框架结束,这些框架基本上可以完成所有工作.还有很多东西,比如web.py,Pyroxide和Django.
编辑:我还没有太多的网络编程经验.
我想避免解析参数URL等基本和繁琐的事情.
另一方面,虽然使用Ruby on Rails 在15分钟内创建的博客视频给我留下了深刻印象,但我意识到隐藏了数百个东西来自我 - 如果你需要立即编写一个有效的网络应用程序,这很酷,但对于真正了解魔术并不是那么好 - 这就是我现在所寻求的.
我需要确保用户一次只能运行我的程序的一个实例.
这意味着,我必须以编程方式检查相同的程序是否已在运行,并在这种情况下退出.
我想到的第一件事就是在程序启动时在某处创建一个文件.然后,程序的每个其他实例将检查此文件并在找到它时退出.
问题是,程序必须始终正常退出并能够删除它创建的文件,以便工作.如果停电,则锁定文件仍然存在,程序无法再次启动.
为了解决这个问题,我决定将第一个程序的进程ID存储到锁定文件中,当另一个实例启动时,它会检查文件中的PID是否附加到某个正在运行的进程.
如果文件不存在,为空,或者PID与任何现有进程不对应,程序将继续运行并将自己的PID写入文件.
这似乎工作得很好 - 即使在意外关闭之后,(现在过时的)进程ID与其他程序相关联的可能性似乎也很低.
但它仍然感觉不对(有是由一些不相关的进程被锁的机会),并与进程ID的工作似乎超越C++标准,可能不是非常便携无论是.
那么,还有另一种(更干净,更安全)的方式吗?理想情况下,它可以与ISO 98 C++标准一起使用,也适用于Windows和*nix.
如果它无法独立于平台,Linux/Unix对我来说是一个优先事项.
在Windows下的Python中:我想在一个单独的进程中运行一些代码.而且我不希望父母等待它结束.试过这个:
from multiprocessing import Process
from time import sleep
def count_sheeps(number):
"""Count all them sheeps."""
for sheep in range(number):
sleep(1)
if __name__ == "__main__":
p = Process(target=count_sheeps, args=(5,))
p.start()
print("Let's just forget about it and quit here and now.")
exit()
Run Code Online (Sandbox Code Playgroud)
它启动子进程并继续执行.但是,当父母到达结尾时,它仍然等待孩子退出.
即使孩子在跑步,有没有办法让父母退出?当然,我可以运行一个新的python解释器,subprocess.Popen
并将其作为一个单独的脚本提供给它.
不过,还有整个模块用于播放Python代码的过程,所以我想利用它而不是黑客攻击操作系统.而且,如果相同的代码在Python所处的任何地方工作,那将是非常棒的,而不仅仅是在Windows上.
这是其中之一"我知道我不应该这样做,但它非常方便." 的问题.对于那个很抱歉.
我计划使用CouchDB存储一堆文档并保留其整个修订历史记录.CouchDB会自动进行版本控制,但强烈建议程序员不要使用它:
"除了并发控制之外,你不能将文档修订用于任何其他目的."
根据我在CouchDB wiki上发现的内容,可以在压缩期间或复制期间删除版本.据我所知,压缩必须始终手动触发,只有当有多个数据库服务器时才会发生复制.
问题是:如果我不运行压缩并且只对我的文档使用单个数据库实例,我可以使用CouchDB的文档版本并期望它能够工作吗?
我可能会遇到哪些其他问题?例如,不运行压缩会损害性能或消耗更多的磁盘空间(比如果我手动处理版本控制)?
python ×3
windows ×2
.net ×1
autohotkey ×1
c++ ×1
cgi ×1
couchdb ×1
datagridview ×1
frameworks ×1
python-3.x ×1
string ×1
versioning ×1
winforms ×1
wsgi ×1