Articles of python

在Ubuntu中显示matplotlib图(用于Linux的Windows子系统)

所以它似乎在Ubuntu的Windows(Windows子系统为Linux)人们build议我们需要使用Agg后端,只保存图像,而不是显示情节。 import matplotlib matplotlib.use('Agg') # no UI backend import matplotlib.pyplot as plt import numpy as np t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) plt.plot(t, s) plt.title('About as simple as it gets, folks') #plt.show() plt.savefig("matplotlib.png") #savefig, don't show 我们怎么能到达plt.show()会向我们展示图像的地方? 我目前的select是重写plot.show(),而不是只保存在/ mnt / c / Users / james / plots /在windows下的plot-148123456.png,只是有一个浏览器窗口打开查看图像。 我想我可以托pipe该文件夹并使用浏览器。 我的目标是能够运行简单的例子,如上面的代码,而不需要改变代码到ftp的图像的地方等我只想让情节出现在一个窗口。 有没有人想出一个体面的方式来做到这一点?

如何用setuptools打包Python守护进程

你如何用setuptools打包Python应用程序,以便在安装时(例如,通过setup.py或pip),它将守护程序脚本放在适当的位置,启动它,并将其标记为在启动时自动启动? 就我而言,我的代码只能用于Linux,所以我只关心在Linux环境(特别是Ubuntu)中安装守护进程。 我发现了几篇 文章, 介绍如何轻松创buildPython守护进程,但是我似乎无法find任何描述如何在生产环境中安装它们的东西,以便将它们视为任何其他正常的守护进程或服务。 我知道Ubuntu和其他一些发行版在/etc/init.d中保留守护进程,我知道如何使用setuptools将文件复制到文件系统上的特定位置,所以将脚本复制或符号链接到/ etc / init.d然后运行chkconfig来设置它的运行时,还是有更安全的分布式安装守护进程的方式?

Linux阻塞信号到Python初始化

这是我的另一篇文章后续安装信号处理程序与Python 。 简而言之,除非Init已经为特定的信号安装了一个信号处理程序,否则Linux会阻塞所有的信号到PID 1(包括SIGKILL)。 以防止有人将终止信号发送到PID1时发生内核恐慌。 我一直有这个问题,似乎Python中的signal模块没有以系统识别的方式安装信号处理程序。 我的Python Init脚本似乎完全忽略了所有信号,因为我认为它们被阻塞了。 我似乎find了解决办法; 使用ctypes来安装signal()函数在libc中的信号处理程序(在本例中为uClibc)。 下面是一个基于python的testinginit。 它在TTY2上打开一个shell,从中我可以发送信号到PID1进行testing。 它似乎在KVM中使用testing(我愿意与任何感兴趣的人分享虚拟机) 这是解决这个问题的最好方法吗? 有没有更好的方法来安装没有信号模块的信号处理程序? (我一点也不关心) 这是Python中的错误吗? #!/usr/bin/python import os import sys import time from ctypes import * def SigHUP(): print "Caught SIGHUP" return 0 def SigCHLD(): print "Caught SIGCHLD" return 0 SIGFUNC = CFUNCTYPE(c_int) SigHUPFunc = SIGFUNC(SigHUP) SigCHLDFunc = SIGFUNC(SigCHLD) libc = cdll.LoadLibrary('libc.so.0') libc.signal(1, […]

导入错误:没有模块名称libstdcxx

当我用gdbdebugging我的C ++程序时出现了段错误 ,我在gdb中出现这个错误。 Traceback(最近调用最后一个):来自libstdcxx的第63行的“/ usr / share / gdb / auto-load / usr / lib / x86_64-linux-gnu / libstdc ++。so.6.0.19-gdb.py” .v6.printers import register_libstdcxx_printers ImportError:没有名为'libstdcxx'的模块 我正在使用Gdb 7.7.1和g ++版本4.8.4。 我search了一下,但没有得到答案。 任何人都可以解决我的错误? 非常感谢你。

如何在Linux上dynamic地从Python中插入C函数(没有LD_PRELOAD)?

我如何在运行时(无LD_PRELOAD )拦截/挂钩Linux上的fopen()这样的C函数? 我想从Python做到这一点(因此,我假设该程序已经在运行CPython虚拟机),并重新路由到Python代码。 我很好,只是挂钩共享库函数。 我也想这样做,而不必改变程序的运行方式。 一个想法是基于ptrace()或者重写用dlsym()或者在PLT中find的代码来编译我自己的工具,并且针对ctypes生成的C-callable函数,但是我想我会先问一下。 谢谢。

如何从Linux上的文件path获取详细的设备/分区信息(如UUID,硬盘序列等)

从绝对文件path开始,我想获得以下信息: 存储文件的文件系统的挂载点(为了计算相对于挂载点的path) 文件系统的UUID和标签 包含分区的硬盘驱动器的types(或供应商名称)和序列号 我知道2和3在很多情况下可能是未定义的(例如,对于回送,ramfs,encyrpted设备),这是完全正确的。 我也知道如何使用shell和系统工具(如df和/sys或/proc文件系统)来获取这些信息。 看到这个问题作为参考。 但是,我正在寻找最简单的方法来用Python 3.5编程。 这意味着: 更喜欢系统调用,而不是parsing/proc或/sys (可能会有所变化或依赖于内核configuration?) 避免调用subprocess并parsing其输出(繁琐的定义) 到目前为止,我在path上使用os.stat()从os.stat()获取块设备的主要和次要编号。 但是,正确的方法是什么? 有例如 /proc/mounts /proc/partitions /sys/dev/block/<major>:<minor> 注:关于挂载块设备的分区, /proc/mounts和/proc/partitions似乎是规范的信息源(这是OK)。 对于UUID,标签,连续udevadm等我目前使用udevadm和parsing输出: def get_udev_properties(dev_name): cmd = ["udevadm", "info", "–query=property", "–name", dev_name] result = subprocess.run(cmd, stdout=subprocess.PIPE) return parse_properties(result.stdout) 进一步说明:从我的问题中抽象出来,可以问一个更一般的问题: 对于linux系统调用和内核文件系统,块设备的规范标识或表示是什么? 通过主要和次要数字获得代表的正确方法是什么? 获取有关块设备的详细信息的正确方法是什么?

如何获取QPixmap或QImage像素的RGB值 – Qt,PyQt

根据这个答案https://stackoverflow.com/a/769221/544721 ,我已经在抓取区域做了以下代码打印值: import sys from PyQt4.QtGui import QPixmap, QApplication app = QApplication(sys.argv) # img is QImage type img = QPixmap.grabWindow( QApplication.desktop().winId(), x=00, y=100, height=20, width=20, ).toImage() for x in range(0,20): for y in range(0,20): print( "({},{}) = {}".format( x,y,(img.pixel(x,y)) ) ) 但像素显示如下: (0,0) = 4285163107 (0,1) = 4285163107 (0,2) = 4285163107 (0,3) = 4285163107 (0,4) […]

更改文件创builddate

我可以在Linux中使用Python更改某些文件的创builddate吗?

什么是subprocess.call()的返回值?

我不知道subprocess.call()的返回值是什么意思。 我可以安全地假设一个零值将始终意味着命令执行成功? 返回值是否等于shell命令的退出状态? 例如,下面的一段代码是否适用于Linux上的任何命令? cmd = "foo.txt > bar.txt" ret = subprocess.call(cmd, shell=True) if ret != 0: if ret < 0: print "Killed by signal", -ret else: print "Command failed with return code", ret else: print "SUCCESS!!" 请赐教:-)

我如何与Python中的另一个程序进行交互?

我想编写一个运行另一个程序的Python脚本,读取其他程序的输出并对其进行处理。 问题是这个程序提示input密码,我不知道如何自动提供。 (对于这个脚本来说,如果密码是以纯文本的forms存储在脚本本身,那真的没什么关系)。我想要做的就是: os.system('echo someinput | /var/local/bin/someprogram') 这会导致某些程序给我不需要的密码提示,也不会将程序的输出作为返回值。 不幸的是,该scheme没有办法绕过这个提示。 不幸的是,我对于如何解决这个问题也有一些限制。 首先,我坚持Python 2.3(所以我不能使用subprocess模块)。 其次,我不能安装任何新的模块,(所以没有关系)。 幸运的是,它不必特别便携,所以只有Linux的解决scheme是好的。 我一直在试图弄清楚pty模块,因为它看起来像提供了我所需要的,但花了几个小时的时间与之搏斗后,我无法弄清楚如何让它按我需要的方式工作。