Articles of python

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。 我在这里错过了什么?

Python shutil.copy在FAT文件系统上失败(Ubuntu)

问题:在Linux中使用shutil.copy()将文件复制到FAT16挂载的文件系统失败(Python 2.7.x)。 失败是shutil内部错误和实际上失败shutil.chmod,shutil.copy似乎执行。 Shell chmod也会失败,因为在FAT中不支持权限。 问题:有没有什么干净的方法呢? 我知道我有几个select,例如: 使用复制文件 – 不理想,因为它需要完整的path,而不仅仅是目标目录,但可行 执行shell cp来复制文件 编写自己的复制function,不要尝试更改文件模式 有没有办法解决这个在Python或FAT挂载选项? 我现在通过执行mount -t vfat -o umask = 000 / dev / loop0 / mnt / foo来挂载我的程序中的文件系统 捕获exception并没有什么帮助,因为在shutil.copy和shutil.copy()内发生exception时,它在从IOException发送到调用函数之前似乎从shutil.chmod()捕获IOExceptionexception时删除目标文件。 任何想法,或者我应该从1-3select一个? 汉努

我如何检测Ubuntu版本?

我目前正在编写一个改变一些networkingconfiguration文件的Python应用程序。 该应用程序需要在Ubuntu 10.04至13.10上运行。 问题是,NetworkManager在不同的版本中有不同的方式(尽pipe它们最终在13.04+版本中修复了这个问题)被破坏了,这会导致与我的应用程序不兼容。 我已经找出了每个版本的问题,并为他们开发了解决方法,我只是不确定最好的方法是检测用户正在运行的Ubuntu版本。 到目前为止我所提出的最好的解决scheme是parsinglsb_release -a的输出,但是这似乎是一个相当脆弱的解决scheme,可能会失败,例如Mint等Ubuntu派生的发行版本,甚至可能会出现一些“官方“变体(Kubuntu,Xubuntu等)。 有没有一种很好的方法来检测给定的Linux发行版的基本分布和版本,所以我可以基于我的应用程序在该版本上做出的select?

在Python中将RAR文件的内容读入内存

我正在寻找一种方法来读取从rar档案到内存的特定文件。 具体来说,他们是编号图像文件的集合(我正在写一个漫画阅读器)。 虽然我可以简单地unrar这些文件,并根据需要加载(完成时删除它们),如果可能,我宁愿避免这种情况。 所有人都说,如果可能的话,我更喜欢跨平台(Windows / Linux)的解决scheme,但Linux是必须的。 同样重要的是,如果您要指出一个图书馆来处理这个问题,请理解它必须是免费的(如啤酒)或OSS。

为什么subprocess.Popen参数长度限制小于操作系统报告的限制?

我在Linux 3.16.0上运行Python 3.4.3。 我想使用subprocess.Popen来运行一个长单参数(一个复杂的Bash调用),大约200KiB的命令。 根据getconf和xargs ,这应该是在我的范围内: $ getconf ARG_MAX 2097152 $ xargs –show-limits < /dev/null Your environment variables take up 3364 bytes POSIX upper limit on argument length (this system): 2091740 POSIX smallest allowable upper limit on argument length (all systems): 4096 Maximum length of command we could actually use: 2088376 Size of command buffer […]

是否有可能在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 […]