Articles of python

是否有可能在python shebang中包含命令行选项?

我在我的python脚本的顶部有规范的shebang。 #!/usr/bin/env python 但是,当我运行我的脚本时,我仍然经常想要将无缓冲的输出导出到日志文件中,所以我最终调用了: $ python -u myscript.py &> myscript.out & 我可以embedded-u选项在shebang中像这样… #!/usr/bin/env python -u 只打电话: $ ./myscript.py &> myscript.out & …仍然没有得到缓解? 我怀疑这是行不通的,想在尝试之前检查一下。 有什么可以做到这一点?

如何防止Python的os.walk跨越挂载点?

在Unix中,所有的磁盘都是作为主文件系统中的path公开的,因此os.walk('/')将遍历,例如/media/cdrom以及主硬盘,这对于某些应用程序来说是不可取的。 如何获得保持在单个设备上的os.walk ? 有关: 有没有一种方法来确定一个子目录是否在使用os.walk的python在同一个文件系统?

在Linux中工作时模拟Ctrl-C键盘中断

我正在处理一些脚本(在我工作的公司),这些脚本被加载/卸载到虚拟机pipe理程序中,以便在事件发生时触发一段代码。 实际卸载脚本的唯一方法是按Ctrl – C。 我正在用Python编写一个自动化过程的函数 只要在程序的输出中看到string"done" ,就应该vprobe 。 我正在使用subprocess.Popen执行命令: lineList = buff.readlines() cmd = "vprobe /vprobe/myhello.emt" p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid) while not re.search("done",lineList[-1]): print "waiting" os.kill(p.pid,signal.CTRL_C_EVENT) 正如您所看到的,我正在以读写模式打开的buff文件描述符中输出。 我检查最后一行; 如果它已经'done' ,我就杀了它。 不幸的是, CTRL_C_EVENT只对Windows有效。 我能为Linux做什么?

“以下软件包将被更高优先级的频道取代”是什么意思?

免责声明:我是一个无知的Linux + Anaconda noob。 现在,就这样,我正试图在64位Linux上安装我的Anaconda发行版中的fuzzywuzzy。 当我这样做,它试图改变我的conda , conda-env conda-forge渠道。 如下: 我通过写作搜寻anaconda模糊的wuzzy: anaconda search -t fuzzywuzzy 这表明在conda-forge上提供的64位Linux上的anaconda的最新版本是0.13。 要在命令行中安装,请input: conda install -c conda-forge fuzzywuzzy=0.13.0 我得到以下输出: The following packages will be downloaded: package | build —————————|—————– conda-env-2.6.0 | 0 1017 B conda-forge python-levenshtein-0.12.0 | py27_0 138 KB conda-forge conda-4.2.13 | py27_0 375 KB conda-forge fuzzywuzzy-0.11.0 | py27_0 15 […]

为什么孩子没有死?

我期望terminate()方法杀死这两个进程: import multiprocessing import time def foo(): while True: time.sleep(1) def bar(): while True: time.sleep(1) if __name__ == '__main__': while True: p_foo = multiprocessing.Process(target=foo, name='foo') p_bar = multiprocessing.Process(target=bar, name='bar') p_foo.start() p_bar.start() time.sleep(1) p_foo.terminate() p_bar.terminate() print p_foo print p_bar 运行代码给出: <Process(foo, started)> <Process(bar, started)> <Process(foo, started)> <Process(bar, started)> … 我期待着: <Process(foo, stopped)> <Process(bar, stopped)> <Process(foo, stopped)> […]

使用Python 3.6.1在Linux / Intel Xeon上使用“fork”上下文块进行多处理?

问题描述 我稍微调整了这个答案的代码(见下文)。 但是,当在Linux上运行这个脚本(如命令行: python script_name.py )时,它将打印所有jobs running: x ,但之后似乎卡住了。 但是,当我使用spawn方法( mp.set_start_method('spawn') )它工作得很好,立即开始打印countervariables的值(请参阅listener方法)。 题 为什么它只在产卵过程中起作用? 我怎样才能调整代码,所以它与Forc的工作(因为它可能更快) 码 import io import csv import multiprocessing as mp NEWLINE = '\n' def file_searcher(file_path): parsed_file = csv.DictReader(io.open(file_path, 'r', encoding='utf-8'), delimiter='\t') manager = mp.Manager() q = manager.Queue() pool = mp.Pool(mp.cpu_count()) # put listener to work first watcher = pool.apply_async(listener, (q,)) jobs […]

Python是否有同步?

同步手册页说: sync()会导致所有缓冲修改,以便将文件元数据和数据写入底层文件系统。 Python有一个呼叫来做到这一点? PS不是fsync ,我明白了。

是不可中断的睡眠我的Python程序的原因是真的很慢(如果是这样,我该如何解决这个问题?)?

我有以下select语句(使用sqlite3和pysqlite模块): self.cursor.execute("SELECT precursor_id FROM MSMS_precursor "+ "JOIN spectrum ON spectrum_id = spectrum_spectrum_id "+ "WHERE spectrum_id = spectrum_spectrum_id "+ "AND ROUND(ion_mz,9) = ? AND ROUND(scan_start_time,4) = ? "+ "AND msrun_msrun_id = ?", select_inputValues) 在Python中运行需要55秒。 直接在SQLite命令行上运行它只需要15ms。 现在,我注意到,在这个步骤中,Python程序进入了不间断的睡眠状态( 31283 ndeklein 18 0 126m 24m 3192 D 1.0 0.0 2:02.50 python ,顶级输出中的D),并从100%的CPU下降到1 % 中央处理器。 现在我在查询过程中注意到了,在运行查询时我也查看了顶部输出。 在这段时间内,top也显示它会进入不间断的睡眠状态,虽然它在R和D之间来回切换,只减慢到50%左右(根据D或R状态而变化)。 所以现在我认为这是减慢我的查询速度(请纠正我,如果不间断的睡眠与程序速度无关)。 如果这是真的,我怎样才能确保程序不会进入这种状态? 更新1: […]

如何在崩溃后重新运行进程Linux?

我有Python脚本,从Linux(Cent OS)运行。 我怎样才能永远运行这个过程(脚本)? 或者如它会在崩溃后重新运行?

在linux上安装特定版本的python模块(pySide)

所以,保持简单。 Ubuntu 12.10已经安装了python 3.2,并链接到“python3”。 我下载了Python 3.3,它的命令是“python3.3”。 不过,我从synaptic下载pySide for python3。 使用“从PySide.QtCore导入*”在python3.3失败。 但是,当我跑“python3”(又名3.2)一切工作正常。 Synaptic刚刚安装了python3.2的lib,它是ubuntu中默认的python3。 我如何强制突触来安装python3.3的模块? 谢谢