Articles of python

NoSql与我自己的自定义二进制文件?

最初,我只能处理1.5 [TB]的数据。 由于我只是需要快速的写入/读取(没有任何SQL),我devise了自己的平面二进制文件格式(使用python实现),并轻松(快乐地)保存我的数据并在一台机器上操作。 当然,为了备份目的,我添加了2台机器作为精确的镜像(使用rsync )。 目前,我的需求在不断增长,需要构build一个能够成功扩展到20 [TB](甚至更多)数据的解决scheme。 我很乐意继续使用我的平面文件格式进行存储 。 这是快速,可靠,给我我需要的一切。 我关心的是复制,数据一致性等等(显然,数据将不得不分布 – 并不是all data都可以存储在one machine )通过networking。 有没有ready-made解决scheme( Linux / python based ),可以让我继续使用我的文件格式进行存储,但是会处理NoSql解决scheme通常提供的其他组件? (数据一致性/可用性/简单复制)? 基本上,我只想确保我的二进制文件在整个networking中是一致的。 我使用的是60个核心双核机器(每个都有1GB RAM和1.5TB disk )

当通过符号链接访问文件时,如何让Django的manage.py正常工作?

问题 当试图运行我的一个自定义Djangopipe理命令( send_notify_emails )时,出现以下错误: $ python web_apps/manage.py send_notify_emails Traceback (most recent call last): File "web_apps/manage.py", line 11, in <module> execute_manager(settings) File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 436, in execute_manager setup_environ(settings_mod) File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 419, in setup_environ project_module = import_module(project_name) File "/usr/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) ImportError: No module named my_django_app-1.0 背景 我有一个Django网站,里面有两个应用程序。 站点目录(包括应用程序模块目录,以及settings.py,urls.py和manage.py)的/srv/web_apps是/srv/web_apps 。 这是一个到/usr/share/my_django_app-1.0的符号链接,它是一个生产版本标签的svn export 。 […]

当文件被删除时,检测python中的破碎stream

我的问题是日志旋转时停止日志logging的Python程序。 我已经把它追踪到河stream本身。 我没有看到任何方式来判断stream是否从python中断。 文件被删除后,它仍然接受写入没有任何问题。 import os FILE = 'testing.txt' fs = open(FILE, 'a') fs.write('word') os.remove(FILE) fs.write('Nothing….') # Nothing breaks print(fs.errors) # No errors 那么,如何才能知道文件stream是否仍然有效? 并检查文件是否存在将无济于事,因为文件将始终存在,无论stream是否仍然有效。

轻松部署Python和应用程序在一个捆绑包,对于Linux

我开发在服务器端相当大的python应用程序,所有数据库连接,文件提取,parsing,命令行调用。 因为我在标准的python lib之外使用了许多第三方模块,所以它成为部署的噩梦。 而我失去了他们的踪迹。 特别是不同的Linux操作系统使用不同的版本,所以使用操作系统的软件包pipe理器来安装它们不再是好事。 我想部署他们在包括目前的python版本,我正在使用(大多数操作系统仍然与Python 2.5,6我使用2.7和2.7特定function)。 更重要的是,我必须教导客户如何部署,以便在其他服务器上进行testing。 但他们不是Linux专家。 我必须在一个脚本中或通过复制和粘贴来简化。 有Windows的PortablePython但Linux没有。 而我从来没有使用python包装,因为我通常在服务器上工作,我只主办。 请赐教python的可用打包和部署选项,包括所有已安装的python模块和python本身。

subprocess的asynchronous双向IOredirect

我想弄清楚一个subprocess的asynchronous双向IOredirect的一般化方法。 基本上,我想产生一个等待input的交互式subprocess,任何输出都应该被回读。 我试图通过产生一个新的Python进程来实验python.subprocess。 一个简单的例子试图实现如下 process = subprocess.Popen(['/usr/bin/python'],shell=False,stdin=subprocess.PIPE, stdout=subprocess.PIPE) while True: output = process.stdout.readline() print output input = sys.stdin.readline() process.stdin.write(input) 并执行上面的代码片断挂起没有任何输出。 我尝试使用/usr/bash和/usr/bin/irb但结果完全相同。 我的猜测是,IOredirect并不能很好地缓冲IO。 所以我的问题是,读取subprocess的输出而不刷新缓冲区或退出subprocess是否可行? 下面的post提到IPC套接字,但为此我将不得不改变subprocess,这可能是不可行的。 有没有其他方法可以实现呢? 注意***我的最终目标是创build一个可以与远程Web客户端交互的服务器REPL过程。 虽然给出的例子是Python,但我的最终目标是通过一个通用的包装器来包装所有可用的REPL。 在答案中的一些build议的帮助下,我想出了以下内容 #!/usr/bin/python import subprocess, os, select proc = subprocess.Popen(['/usr/bin/python'],shell=False,stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.PIPE) for i in xrange(0,5): inputready, outputready, exceptready = select.select([proc.stdout, proc.stderr],[proc.stdout, proc.stderr],[proc.stdout, proc.stderr],0) if not inputready: print "No Data", […]

删除一个巨大的文件中的空列

什么是删除文件中空列的最快方法。 下面给出一个示例文件。 我使用了python'pandas'软件包,但花费的时间太多(大约10分钟后我没有得到答案,所以退出,因为我必须为许多文件做这个)加载我的2 GB文件。 df = read_table(inFileName, sep="\t") df = df.dropna(axis=1,how='all') #remove columns aaa bbb ccc ddd eee 1 ac 2 sd 3 dfd 4 gd 5 he 我不知道哪个领域是空的。 我正在使用0.9.1版本的“pandas” pkg_resources.get_distribution(“pandas”)。version'0.9.1'

在Python中使用cat命令进行打印

在Linux内核中,我可以使用以下命令将文件发送到打印机 cat file.txt > /dev/usb/lp0 据我所知,这将file.txt中的内容redirect到打印位置。 我尝试使用以下命令 >>os.system('cat file.txt > /dev/usb/lp0') 我认为这个命令会达到同样的效果,但它给了我一个“权限被拒绝”的错误。 在命令行中,我会在连接之前运行以下命令。 sudo chown root:lpadmin /dev/usb/lp0 有一个更好的方法吗?

在Django中运行PyUNO

我有一位运行SUSE Enterprise Server 11的客户,我想在OpenOffice-Python-Bridge上使用名为PyUNO的django-project。 它使用mod_wsgi运行apache2,没有virtualenv或其他东西。 我添加了相关的path到PYTHONPATH,但是当我运行一个shell python manage.py shell并尝试import uno ,我得到这个错误: dynamic module not initialized properly 这是OpenOffice 3.4,Python 2.6.x(都来自SUSE-DVD)。 Google把我引导到一个系统variablesLD_LIBRARY_PATH ,但是一旦我设置,我就无法再启动shell了,因为python找不到django(PYTHONPATH似乎被破坏了)。 如果我运行ldconfig -v /path/to/openoffice/program/这是另一个常见的build议,结果是一样的。 做完上述之一后,我可以运行全系统的python并导入uno。 但是我不能再运行django-shell,因为没有finddjango。 如果我重置LD_LIBRARY_PATH(通过未unset LD_LIBRARY_PATH或ldconfig ),我到了“旧”的情况。 OpenOffice捆绑了一个python二进制文件。 这一个可以导入uno没有错误。 结果:我想过使用另一个uno.py或者告诉apache2使用openoffice附带的python版本。 我怎么能做这样的事情或添加相关的pyuno的依赖关系的Apache版本使用的Python版本? 或者哪个版本的openoffice / pyuno可以解决我的问题? 我想避免从SUSE源代码中触摸mod_wsgi和python。 还有一些关于LD_LIBRARY_PATH的提示可能会有所帮助。

Python守护进程中的Paramiko导致IOError

我想在python守护进程中使用paramiko执行ssh命令。 我为守护进程使用以下实现: https : //pypi.python.org/pypi/python-daemon/ 当程序启动时,paramiko尝试连接时,pycrypto引发一个带有Bad file descriptor IO Bad file descriptor 。 如果我删除守护程序代码(只取消注释最后一行,并注释上述两个) ssh连接build立如预期。 短testing程序的代码如下所示: #!/usr/bin/env python2 from daemon import runner import paramiko class App(): def __init__(self): self.stdin_path = '/dev/null' self.stdout_path = '/dev/tty' self.stderr_path = '/dev/tty' self.pidfile_path = '/tmp/testdaemon.pid' self.pidfile_timeout = 5 def run(self): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.load_system_host_keys() ssh.connect("hostname", username="username") ssh.close() app = […]

防止端口被其他应用程序“盗取”

我有一个小的守护进程的应用程序,它侦听特定的端口,所以碰巧不同的应用程序使用相同的端口,不知何故将它从我的应用程序中拿走。 开始之前,其他应用程序一切正常,一旦我启动它,我不再得到一个连接,但closures它,但守护进程继续工作。 我不知道有可能使用一个端口,而另一个应用程序正在监听它,并希望如果可能的话,防止发生这种情况。 有趣的是,当干扰应用程序已经在运行的时候,当我重新启动守护进程时,甚至没有例外,它可以创build,绑定和监听端口,它根本不工作,因为它应该。 这里是主循环代码: if __name__ == '__main__': print "Daemon PID:", os.getpid() server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM) server.bind(('localhost', local_port)) server.listen(10) print "Server listening on:", server.getsockname() while True: thread.start_new_thread(handle_client, server.accept()) ( local_port和handle_client是事先定义的,应该是无关紧要的,系统是Debian GNU / Linux 7,Python版本是2.7.3) 其他信息请求: 运行守护进程: tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 25422/python 运行守护进程和VLC tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 25422/python tcp6 0 0 […]