- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
此代码在使用 Python 2.5.1 运行时生成“AttributeError: 'Popen' object has no attribute 'fileno'”
代码:
def get_blame(filename):
proc = []
proc.append(Popen(['svn', 'blame', shellquote(filename)], stdout=PIPE))
proc.append(Popen(['tr', '-s', r"'\040'"], stdin=proc[-1]), stdout=PIPE)
proc.append(Popen(['tr', r"'\040'", r"';'"], stdin=proc[-1]), stdout=PIPE)
proc.append(Popen(['cut', r"-d", r"\;", '-f', '3'], stdin=proc[-1]), stdout=PIPE)
return proc[-1].stdout.read()
堆栈:
function walk_folder in blame.py at line 55
print_file(os.path.join(os.getcwd(), filename), path)
function print_file in blame.py at line 34
users = get_blame(filename)
function get_blame in blame.py at line 20
proc.append(Popen(['tr', '-s', r"'\040'"], stdin=proc[-1]), stdout=PIPE)
function __init__ in subprocess.py at line 533
(p2cread, p2cwrite,
function _get_handles in subprocess.py at line 830
p2cread = stdin.fileno()
这段代码应该可以在 python 文档中描述 this usage .
最佳答案
三件事
首先,你的 () 是错误的。
其次,subprocess.Popen()
的结果是一个进程对象,而不是一个文件。
proc = []
proc.append(Popen(['svn', 'blame', shellquote(filename)], stdout=PIPE))
proc.append(Popen(['tr', '-s', r"'\040'"], stdin=proc[-1]), stdout=PIPE)
proc[-1]
的值不是文件,而是包含文件的进程。
proc.append(Popen(['tr', '-s', r"'\040'"], stdin=proc[-1].stdout, stdout=PIPE))
第三,不要在 shell 中执行所有 tr
和 cut
垃圾操作,几乎没有什么比这更慢的了。用 Python 编写 tr
和 cut
处理 - 它更快更简单。
关于Python子进程 "object has no attribute ' fileno'”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/777996/
我在使用 fcntl() 和 fileno 时遇到问题。我在实现锁定机制时遇到问题。但是,当我尝试关闭文件时,出现以下错误 fcntl: Bad file descriptor。我正在使用 filen
我正在尝试在我的 C 代码中使用 posix 函数 isatty() 来判断输出是否被重定向。但是,为此我需要一个文件描述符,而且根据我的研究,fileno() 似乎不再包含在 stdio.h 中。是
作为我正在编写的 python 项目的一部分,我有一个包装 stdout 流和文件的对象。然后,我的类上的 write() 方法会写入流和文件。然后,我将 sys.stdout 设置为我的对象,以便任
Python fileno()函数:得到文件编号 该函数用于得到文件在进程中的编号,这是一个整数值。其中,stdin 在进程中的文件编号永远是 0,stdout 永远是 1,stderr 永远是 2,
import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime
是否可以在不使用 fileno(FILE* file) 的情况下从文件指针获取文件描述符? 特别是,是否可以仅使用 C 标准库中的函数?(我的问题实际上是因为 fileno() 是一个 POSIX 标
我正在用 funopen 打开一个流 FILE *fin = funopen(cookie, readfn, NULL, NULL, closefn); if (fin == NULL) {
我在不同服务器上的许多项目中使用过 Photologue,以前从未遇到过此问题。 当Photologue调用此函数时 self.create_size(photosize) 我收到此错误 Unsupp
我非英语母语,因此有些惯用术语我不懂。 函数 fileno() 或 header errno.h 中的“no”真正含义是什么? “no”是“number”的缩写吗? 如果是,为什么? 最佳答案 在 m
我正在尝试将文件(音频文件)从 django webapp 上传到 django rest 服务。 形式: {% csrf_token %} V
我想将 grep 的输出缓冲到缓冲区,然后用 pandas 读取它,以避免将巨大的原始文件加载到内存中: import subprocess import io import pandas as pd
我在 Windows 8 上运行 Cygwin,试图为我想修改的游戏编译源代码。不幸的是,我在构建涉及 fileno 函数时遇到了一些错误。在谷歌搜索之后,问题似乎与 c++11 支持有关(我不太确定
我正在处理巨大的文件。 (>>>2GB)。我的问题是,如果文件大于 sizeof(int),在文件描述符上使用 fileno() 是否安全? 这里是一个简短的代码片段: #define _FILE_
我正在使用来自此链接的服务器和客户端程序:http://www.bogotobogo.com/python/python_network_programming_tcp_server_client_c
我正在使用一个使用 threads 的 Perl 脚本。和 threads::shared .我想从一个单独的线程打开的文件句柄中读取,但是 threads::shared不能承认它是共享标量的值。
有没有办法将 int 类型(文件描述符)的变量转换为 C 中的 FILE 类型?我有一个打开的管道 fd,我想使用需要 FILE 的函数。 最佳答案 你不能投它,但你可以调用fdopen(3) ,这正
我正在尝试编写一个与 Python 2 标准库的 socket.socket 具有相同接口(interface)的类。 当程序尝试调用 select.select() 时,我在尝试重现对象应具有的行为
免责声明:不要使用 ::feof() 作为循环条件。 例如,请参阅以下问题的答案:file reading: feof() for binary files 但是,我有“真实的”代码演示了一个问题,它
我刚刚使用 easy_install 安装了 Pyevolve,在尝试运行我的第一个程序时遇到错误。我首先尝试复制并粘贴 first example 的源代码但这是我尝试运行它时收到的信息: Trac
此代码在使用 Python 2.5.1 运行时生成“AttributeError: 'Popen' object has no attribute 'fileno'” 代码: def get_blam
我是一名优秀的程序员,十分优秀!