Articles of python

Python Linux路由表查找

我张贴Pythonfind第一跳的networking首先想find第一跳,我想到的越多,越容易,它似乎是一个进程的Python路由表。 我不是程序员,我不知道我在做什么。 :p 这就是我想到的,我注意到的第一个问题是loopback接口没有显示在/ proc / net / route文件中 – 所以评估127.0.0.0/8会给你默认路由…对于我的应用程序,这并不重要。 还有什么重要的,我俯瞰? parsingip route get <ip>还是一个更好的主意? import re import struct import socket ''' Read all the routes into a list. Most specific first. # eth0 000219AC 04001EAC 0003 0 0 0 00FFFFFF … ''' def _RtTable(): _rt = [] rt_m = re.compile('^[a-z0-9]*\W([0-9A-F]{8})\W([0-9A-F]{8})[\W0-9]*([0-9A-F]{8})') rt = open('/proc/net/route', […]

如何干净地杀死python中的subprocess

我们正在使用python进程来pipe理长时间运行的pythonsubprocess。 子过程偶尔需要被杀死。 kill命令不会完全终止进程,只会使其不可用。 运行以下脚本演示了此行为。 import subprocess p = subprocess.Popen(['sleep', '400'], stdout=subprocess.PIPE, shell=False) 要么 p = subprocess.Popen('sleep 400', stdout=subprocess.PIPE, shell=True) 将创build一个subprocess。 p.terminate() p.kill() 对这个过程没有任何作用。 由ps aux | grep sleep演示 ps aux | grep sleep $ ps aux| grep 'sleep' User 8062 0.0 0.0 7292 764 pts/7 S 14:53 0:00 sleep 400 这个过程没有被杀死/失效。 使用'kill'和pid作为参数的subprocess.call()函数将发出kill命令。 subprocess.call(['kill', str(p.pid)]) 这将杀死进程,但现在已经不存在了。 […]

如何通过ssh命令行来远程命令的引号

我在远程服务器上发出以下命令时遇到问题。 | awk“{print $ 1}”似乎对输出没有任何影响。 我错误地转义引号字符? 更糟糕的是,这两个命令实际上是通过一个python脚本提交的…因此使得转义更容易混淆。 在本地服务器上: ssh remote.server.com "find /root/directory -type f -exec md5sum {} + | awk '{print $1}'" 在远程服务器上: find /root/directory -type f -exec md5sum {} + | awk '{print $1}'

将html5页面logging为video

我的目标是有一个Ubuntu(桌面)服务器,“简单地”将html5网页转换为video。 我想捕捉平滑的CSS和JSanimation。 到目前为止,我试过这个:(phantomjs) https://gist.github.com/phanan/e03f75082e6eb114a35c 时间和帧速率不稳定或快。 目前为止,我的最佳解决scheme是在Kiosk模式下打开Goog​​le Chrome浏览器窗口,等待3秒钟,然后使用x11grab通过ffmpeg进行logging。 这感觉就像是一个“笨拙”和不专业的解决scheme。 program.sh #!/bin/bash duration=$1 outputFile=$2 stop=$(($duration+5)) ./openBrowser.sh $stop & PIDOIS=$! ./recScreen.sh $duration $outputFile & PIDMIX=$! wait $PIDIOS wait $PIDMIX recScreen.sh #!/bin/bash sleep 3 ffmpeg -video_size 1920×1080 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast -t "$1" "$2".mkv killall -9 chrome openBrowser.sh #!/bin/bash /usr/bin/google-chrome –kiosk […]

如何检查串口是否已经打开(通过另一个进程)在Linux中,使用Python 2.7(可能pyserial)?

我知道还有其他问题与我的很相似,但是他们都没有解决我遇到的问题。 我想使用pyserial来访问一个串行端口( /dev/tty… ),但只有在另一个进程尚未打开的情况下。 以下片段在运行一次后会在我的Ubuntu 12.04机器上返回四个可用的端口。 如果我第二次运行它,我预计没有端口可用。 可悲的是,返回相同的端口列表。 看来pyserial不能确定另一个进程已经打开了这个端口。 我期望一个SerialException抛出,或isOpen()方法返回False,但pyserial乐意打开多次。 import serial from serial import tools from serial.tools import list_ports def available_ttys(): for tty in serial.tools.list_ports.comports(): try: port = serial.Serial(port=tty[0]) if port.isOpen(): yield port except serial.SerialException as ex: print 'Port {0} is unavailable: {1}'.format(tty, ex) def main(): ttys = [] for tty in available_ttys(): ttys.append(tty) […]

我如何在Linux中find一个开放的端口?

是否有某种系统调用会返回端口是否可用? 或者至less有一个传统的做法,不会使你的过程成为一个坏公民? 目前这是我如何做到这一点: def find_open_port(min_port, max_port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) for port in range(min_port, max_port): if port > max_port: raise IOError('Could not find a free port between {0} and {1}'.format(min_port, max_port)) try: s.bind(('localhost', port)) return port except socket.error as error: if error.strerror == 'Address already in use': continue else: raise error 呸!

像Python中的其他用户一样运行一个进程

我正在运行一个脚本作为userA的根访问,从这个脚本我想做一个popen()调用,并运行一个不同的进程作为userB 。 os.setuid()似乎并没有为此工作(除非我这样做是错误的?),我想避免一个基于Linux的解决scheme,如su -userB -c <command> 当脚本以userA身份运行时,是否有一种运行进程为python的Python?

Python的Jedi漫游文件夹在Windows 7上

我在Windows 7上使用anaconda 2/3,我有4个Python环境。 在漫游文件夹中我看到3个文件夹出现: C:\ Users \ username \ AppData \ Roaming \ Jedi \ Jedi \ CPython-27-30 C:\ Users \ username \ AppData \ Roaming \ Jedi \ Jedi \ CPython-35-30 C:\ Users \ username \ AppData \ Roaming \绝地武士\绝地武士\ CPython的-36-30 有没有办法让这些文件夹不在漫游configuration文件? 谢谢 编辑:正如@Simon Fraserbuild议下面我使用Spyder 3.2.4。 在https://github.com/davidhalter/jedi/issues/926上有一个关于Jedi的问题,但是他们说已经解决了,他们把这些文件夹移到了本地文件夹。

Python:如果我的软件包在Linux,Mac和Windows上运行,我该如何testing它

我需要testing我的Python包,如果它在不同的系统上正常工作。 我发现不同的Python版本的Tox ,但不同的操作系统,如Windows,Linux和Mac呢? 你能推荐一个方便的方法来testing我的代码是否适用于所有系统?

如何使Tkinter中的非方形边缘?

为了使我的程序更美观,我使用图像创build寄宿生,但是我想创build一个非方形寄宿生,所以程序看起来有点像这样 ___________ / / /__________/ 我应该怎么做呢? 这是在Windows 7,顺便说一句。 编辑: A尝试使用透明度来制作伪边缘,但是它不会透明。 由于某种原因,它凸出为深灰色。 我想要红色是“边缘”。 替代文字http://img.zgserver.com/python/aelh82.png