Articles of python

Python子脚本占用了所有的stdin

在bash脚本中运行python脚本时,我发现了raw_input / readline的一些奇怪行为。 简而言之,当所有的标准input一次(每个条目由一个新的行分隔)到一个父脚本时,bash子脚本将只采取他们需要的标准input,而python子脚本将消耗所有的标准input,为下一个孩子。 我想出了一个简单的例子来说明我的意思: 父脚本(parent.sh) #!/bin/bash ./child.sh ./child.sh ./child.py ./child.py Bash子脚本(child.sh) #!/bin/bash read -a INPUT echo "sh: got input: ${INPUT}" Python子脚本(child.py) #!/usr/bin/python -B import sys INPUT = raw_input() print "py: got input: {}".format(INPUT) 预期结果 ./parent.sh <<< $'aa\nbb\ncc\ndd' >> sh: got input: aa >> sh: got input: bb >> py: got input: cc >> py: […]

橙色terminal文本

为什么你永远不会看到橙色的terminal文本? 例如在python中: class text_color: black = '\033[30m' red = '\033[31m' green = '\033[32m' yellow = '\033[33m' blue = '\033[34m' magenta = '\033[35m' cyan = '\033[36m' white = '\033[37m' # START MAIN print text_color.yellow + "YAY" 为什么下面这个不行? 为什么你没有看到橙色作为一个选项? orange = '\033[40m' *解决scheme* 在这个问题开始的时候,我并不是很了解terminal。 如果您穿着同样的鞋子,请参考本网站回答您的问题: http://misc.flogisoft.com/bash/tip_colors_and_formatting

为什么龟不是在Linux命令行工作,而是从IDLE?

我在一个Python小组会议上。 在安装了Linux的笔记本电脑上,我使用通常的命令通过terminal执行了以下代码(从Teach Your Children Python开始): import turtle t = turtle.Pen() t.speed(0) turtle.onscreenclick(t.setpos) Python3.4 TurtleDraw.py 它应该提出一个窗口,可以采取鼠标光标input。 相反,窗口出现并立即消失。 另一个人在他的MacBook上尝试了类似的东西,获得了相同的结果。 但是,他通过一个IDLE版本运行相同的代码,并且按照预期工作。 IDLE中是否有自动与该龟窗口集成的东西? 如果我想通过Unix命令行来正确运行它,我可能需要设置环境variables。

在Fedora Linux的Jupyter上运行Python 2&3

我昨天做了一个Fedora 23的全新安装。 我按照https://jupyter.readthedocs.org/en/latest/install.html上的说明安装了Jupyter,这意味着我做了这个 pip install jupyter 它似乎为Python 2运行乐趣。我尝试添加对Python 3内核的支持,按照这里的说明在IPython Notebook中同时使用Python 2.x和Python 3.x,这意味着我按照这些指令http:// jupyter。 cs.brynmawr.edu/hub/dblank/public/Jupyter%20Help.ipynb#1.4.2-Enable-Python-3-kernel 。 我重新启动了服务器,打开了一个新的Python 3笔记本,并在3秒钟之后观察到内核死亡。 对我来说很明显,在没有使用Anaconda的情况下,在Linux上的Jupyter中运行2&3的文档非常less。 我们可以让这个以Fedora Linux为中心,没有Anaconda线程吗? Fedora 23,Python 2.7.10 / 3.4.3 谢谢

Anaconda:禁用提示更改

当使用anaconda(安装python),当我切换到这个虚拟env: source activate my_env 它改变我的提示,并添加(my_env)在我的PS1的开始。 我试着将export VIRTUAL_ENV_DISABLE_PROMPT=1添加到我的bashrc中,但是没有帮助。 任何想法?

如何让Python的terminal错误是彩色的?

我一直在使用iPython笔记本电脑一段时间,我真的很感激错误输出(如果我拼写/语法错误)是这样的颜色: 然而,当我从terminal运行代码(因为ipython不能做任何事情),我没有得到任何颜色,像这样: 当然,这可能会有所不同,terminal/操作系统,但我很好奇,如果有任何简单的软件包/插件,使terminal中的python错误输出彩色请吗? 甚至是寻找什么(我在ubuntu上运行zsh)。

在Python中使用Passkey / Password配对蓝牙设备 – RFCOMM(Linux)

我正在使用Python脚本来search蓝牙设备,并使用RFCOMM进行连接。 该设备具有密码/密码。 我正在使用PyBlueZ,据我所知,这个库不能处理密码/密码连接( Python PyBluez连接到密钥保护设备 )。 我能够发现设备并检索他们的名字和地址: nearby_devices = bluetooth.discover_devices(duration=4,lookup_names=True, flush_cache=True, lookup_class=False) 但是,如果尝试使用以下方式连接到特定设备: s = bluetooth.BluetoothSocket(bluetooth.RFCOMM) s.connect((addr,port)) 我收到错误'Device or resource busy (16)' 。 我尝试了一些使用hcitool和bluetooth-agent的 bash命令,但是我需要以编程方式进行连接。 我能够使用这里描述的步骤连接到我的设备: 如何在Linux上从命令行配对蓝牙设备 。 我想问一下,如果有人用Python的密码/密码连接到蓝牙设备。 我想在Python中使用subprocess.call()使用bash命令,但我不知道这是一个好主意。 谢谢你的帮助。

什么是推荐的方式来更新从Python的proc项目

我在/proc/sys/fs/offs/ts/enable中有一个linux proc项,它在自定义内核模块中切换一个标志。 将该值设置为1将启用模块中的模式,设置为0将禁用该模式。 在bash中,为了启用这个模式,我简单的做 echo 1 > /proc/sys/fs/offs/ts/enable 要禁用它, echo 0 > /proc/sys/fs/offs/ts/enable 我有一个用Python 2.7编写的守护进程,它将寻找一些外部事件触发器,当事件触发时,应该启用或禁用内核模块中的function。 守护进程以root权限运行,所以我不应该遇到任何types的权限问题。 有没有build议从python设置这个值的方法? 例如,说我的function现在看起来像这样。 def set_mode(enable=True): with open('/proc/sys/fs/offs/ts/enable', 'w') as p: if enable: p.write("1") else: p.write("0") p.flush()

Python sys.stdout不能用于init.d脚本

我有一个非常简单的问题。 一个以下面的脚本开始的python脚本: import sys sys.stdout = open("server.out", 'w') 如果我直接input这个命令到terminal python start_server.py & 它写入server.out文件。 如果我inputservice tdserver start ,所有的init.d脚本都是这样的: python start_server.py & 同样的命令,没有别的。 然而,在这种情况下,标准输出不会被写入server.out 为什么? 没有进程locking文件,确认脚本是用ps -aux停止的

写入后中止缓冲到磁盘?

有没有办法中止python写操作,使操作系统不觉得有必要将未写入的数据刷新到光盘上? 我正在将数据写入USB设备,通常是数兆字节。 我在写入时使用了4096个字节作为我的块大小,但看起来Linux很早就caching了大量的数据,并且慢慢写出到USB设备。 如果在写入过程中的某个时刻,我的用户决定取消,我希望应用程序立即停止写入。 我可以看到,数据从应用程序停止stream动,并且USB活动指示灯停止闪烁之间有一个延迟。 几秒钟,通常高达约10秒。 我发现应用程序在close()方法中,我假设,等待操作系统完成写入缓冲的数据。 我在每次写入之后调用flush(),但是这对延迟没有任何影响。 我扫了python文档的答案,但一无所获。