Articles of python

从Python中添加path和调用外部程序的问题

我在“/ home / myname / mydir /”中有一个名为“foo”的可执行文件,并试图从Python调用它,但是我在这里做了一些基本的和错误的。 你可以帮我吗? import os, sys sys.path.append("/home/myname/mydir/") os.system("foo") # os.system("./foo") doesn't work either 谢谢

从txt文件中删除重复的行

我正在处理包含按行分隔的数据的大型文本文件(〜20MB)。 大多数数据项是重复的,我想删除这些重复只保留一个副本。 此外,为了使问题稍微复杂一些,重复添加一些附加信息。 在这种情况下,我需要保持包含额外信息的条目并删除旧版本。 例如,我需要从这个: BOB 123 1DB JIM 456 3DB AX DAVE 789 1DB BOB 123 1DB JIM 456 3DB AX DAVE 789 1DB BOB 123 1DB EXTRA BITS 对此: JIM 456 3DB AX DAVE 789 1DB BOB 123 1DB EXTRA BITS NB。 最后的顺序并不重要。 什么是有效的方法来做到这一点? 我可以使用awk,python或任何标准的linux命令行工具。 谢谢。

Python的ctypes从Linux上的libc调用reboot()

我试图通过ctypes从Python中的libc调用rebootfunction,我只是不能得到它的工作。 我一直在引用man 2 reboot页面( http://linux.die.net/man/2/reboot )。 我的内核版本是2.6.35。 下面是来自交互式Python提示符的控制台日志,我试图让我的机器重启 – 我做错了什么? 为什么不是ctypes.get_errno()工作? >>> from ctypes import CDLL, get_errno >>> libc = CDLL('libc.so.6') >>> libc.reboot(0xfee1dead, 537993216, 0x1234567, 0) -1 >>> get_errno() 0 >>> libc.reboot(0xfee1dead, 537993216, 0x1234567) -1 >>> get_errno() 0 >>> from ctypes import c_uint32 >>> libc.reboot(c_uint32(0xfee1dead), c_uint32(672274793), c_uint32(0x1234567), c_uint32(0)) -1 >>> get_errno() 0 >>> libc.reboot(c_uint32(0xfee1dead), c_uint32(672274793), […]

如何从python导入path中删除当前目录

我想和hg本身的mercurial仓库一起工作。 也就是说,我从https://www.mercurial-scm.org/repo/hg克隆了Mercurial,并希望在克隆的仓库中运行一些hg命令。 问题是,当在这个克隆中运行hg时, hg可执行文件尝试从这个目录加载它的python模块而不是从/usr/lib/pythonVERSION等等。据我所知,这是因为Python导入pathsys.path包含一个空string第一项可能意味着“当前目录”。 没有设置PYTHONPATH环境variables。 问题是我怎样才能防止我安装的hg导入“错误”的模块。

我该如何解决这个错误? Gtk-WARNING **:GModule …初始化检查失败:GLib版本太旧(微不匹配)

我正在用matplotlib编写一个python程序,我得到这个错误: GLib-GIO-Message:使用“内存”GSettings后端。 您的设置不会被保存或与其他应用程序共享。 (python:6304):Gtk-WARNING **:GModule(/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so)初始化检查失败:GLib> version too old (微不匹配) (python:6304):Gtk-WARNING **:加载IM上下文types'ibus'失败 (python:6304):Gtk-WARNING **:GModule(/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so)初始化检查失败:GLib版本太旧微不匹配) (python:6304):Gtk-WARNING **:加载IM上下文types'ibus'失败 (python:6304):Gtk-WARNING **:GModule(/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so)初始化检查失败:GLib版本太旧微不匹配) (python:6304):Gtk-WARNING **:加载IM上下文types'ibus'失败 该程序完成执行,但错误不会消失。 我正在运行Ubuntu 16。 我尝试重新安装Glib,但没有任何改变。 我在网上寻找帮助,但找不到解决scheme。 我是一个noob,我不知道如何解决这个问题。 谁能帮我吗? 我真的很感激你的时间!

使用mmap增加文件的大小

在Windows上的Python中,我可以通过创build一个大文件 from mmap import mmap f = open('big.file', 'w') f.close() f = open('big.file', 'r+') m = mmap(f.fileno(), 10**9) 现在big.file是(大约)1千兆字节。 但在Linux上,这将返回ValueError: mmap length is greater than file size 。 有没有办法像在Windows上一样在Linux上获得相同的行为? 也就是说,能够使用mmap增加文件的大小?

OS X UDP发送错误:55没有可用的缓冲区空间

当我在OSX10.9.1上的python3.3中实现RUDP时,我注意到下面的代码实际上并没有做它在linux上的工作:(对于C,Java和C#/ Mono来说,哪种语言,同样的行为并不重要) from socket import * udp = socket(AF_INET, SOCK_DGRAM) udp.setsockopt(SOL_SOCKET, SO_REUSEADDR, True) udp.bind(('0.0.0.0', 1337)) udp.setblocking(False) udp.setsockopt(SOL_IP, IP_TTL, 4) udp.connect(('8.8.8.8', 12345)) buf = b'x' * 400 for _ in range(1024 * 1024 * 10): udp.send(buf) 这个代码只是写了很多udp包到8.8.8.8,这些包在4跳之后被丢弃,所以他们不应该到达目的地,只是模拟出站stream量。 问题: 这段代码会抛出一个OSError(55,'No buffer space available')错误,而在Linux(Windows)上,它会抛出一个BlockingIOError,这很好,因为它是一个非阻塞套接字。 所以,在Linux和Windows上,套接字在OSX上的行为是正确的,这是一个OSError,这是不好的。 但真正有趣的是,即使我把这个套接字置于阻塞模式下,这个代码仍然会在OSX上抛出一个错误。 而在Linux和Windows上,这不会引发任何错误,正如所料,它只是阻止。 这是基于BSD系统的实现细节吗? 或者我错过了一些重要的networking设置? [编辑] 我忘了提到我正在千兆局域网中testing这种行为。 我认为这是问题。 我连接到一个100mbit的networking,问题就没有了,即使使用300mbit的wlan,问题也没有发生。 现在我想这是连接到高速networking时的一些OSX特定行为。 [编辑 – 最后]我终于find原因: http://lists.freebsd.org/pipermail/freebsd-hackers/2004-January/005369.html […]

OSError故障排除:出于pty设备

有时,我调用pty.openpty() (当我的脚本的一堆实例并发运行时发生pty.openpty()我得到了一个OSErrorexception,并带有'out of pty devices'消息。 什么是我打的限制? 我怎样才能解决这个问题? CentOS 5.6,Python 2.4

Python在打开文件后如何读取文件

我在理解Python被open后如何删除文件的概念方面遇到困难。 这里是代码: >>> import os >>> os.system('cat foo.txt') Hello world! 0 >>> f <_io.TextIOWrapper name='foo.txt' mode='r' encoding='UTF-8'> >>> os.system('rm -f foo.txt') 0 >>> os.system('cat foo.txt') cat: foo.txt: No such file or directory 256 >>> f.read() 'Hello world!\n' >>> 文本和二进制模式给出相同的结果。 我也尝试过大于1Gb的大文件,并在删除后也读取。 即使是非常大的文件, open操作也几乎是瞬间发生。 如果打开的文件不存在,Python从哪里获取数据? 我跑了这个testing python 3.4.3 / 3.5.2 ubuntu 14.04 / 16.04

如何在Python的Linux设备文件上执行低级I / O?

我有一个设备返回一个string来响应写入设备文件的命令。 我能够写入命令到设备,并读取C中的返回string,代码如下所示: int dev = open("/dev/USBDev251",O_RDWR); write(dev,data,sizeof(data)); read(dev,buff,16); 试图在python中做同样的事情: dev = os.open("/dev/USBDev251",os.O_RDWR) os.write(dev, data) os.read(dev,16) 写入成功,但只返回一个空string。 我在这里错过了什么?