标签: filehandle

我可以在Tcl中找到文件句柄中的文件名吗?

类似于我可以在Perl中找到文件句柄中的文件名吗?但在Tcl.

我计划缓存filename-filehandle关联,所以我纯粹是出于好奇 - 特别是链接中提到的"操作系统魔法".在Tcl中有可能吗?

如果重要的话,我(强制进入)在SunOS 5.10上使用Tcl 8.0.5.

filenames file tcl channel filehandle

4
推荐指数
1
解决办法
1394
查看次数

将文件句柄传递给cython函数

我想用cython编译一个python函数,用于读取跳过一些记录的二进制文件(不读取整个文件然后切片,因为我的内存不足).我可以想出这样的事情:

    def FromFileSkip(fid, count=1, skip=0):            
        if skip>=0:
            data = numpy.zeros(count)
            k = 0
            while k<count:
                try:
                    data[k] = numpy.fromfile(fid, count=1, dtype=dtype)
                    fid.seek(skip, 1)
                    k +=1
                except ValueError:
                    data = data[:k]
                    break
            return data
Run Code Online (Sandbox Code Playgroud)

然后我可以使用这样的功能:

 f = open(filename)
 data = FromFileSkip(f,...
Run Code Online (Sandbox Code Playgroud)

但是,为了用cython编译函数"FromFileSkip",我想定义函数中涉及的所有类型,所以"fid"也是文件处理程序.如何在cython中定义其类型,因为它不是"标准"类型,例如整数.谢谢.

python function filehandle cython

4
推荐指数
1
解决办法
3431
查看次数

什么是-t用于此Perl代码

我在perldoc中读到-t文件操作符用于决定是否向tty打开文件句柄.然后我读了一个tty是什么,从我的理解,这是一个终端的旧术语?

然而,我的主要问题是此代码用于:

if(-t STDERR) {
    die "some warning/error message here"
}
Run Code Online (Sandbox Code Playgroud)

我想我真的不明白"将文件句打开到tty"意味着什么.这是否意味着该文件句柄的特定输出出现在tty - 或终端上?除了终端之外,还可以参考一些东西吗?

perl filehandle

4
推荐指数
2
解决办法
135
查看次数

如何从命令行获取文件句柄?

我有一个子程序,它以文件句柄作为参数.如何从命令行上指定的文件路径创建文件句柄?我不想自己对这个文件进行任何处理,我只是想将它传递给另一个子程序,该子程序返回一个包含文件中所有已解析数据的哈希数组.

这是我正在使用的命令行输入:

$ ./getfile.pl /path/to/some/file.csv

这是我调用的子程序的开头看起来像:

sub parse {
    my $handle = shift;
    my @data   = <$handle>;
    while (my $line = shift(@data)) {
      # do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

perl filehandle

3
推荐指数
2
解决办法
2383
查看次数

如何将输出从一个文件句柄重定向到另一个文件句柄?

我想在Perl(在Linux上运行)中建立一个流程管道,包括在不同时间运行的两个部分.

例如:

启动消费者流程:

open( OUT, "| tar xvf - " ) || die "Failed: tar: $!";
Run Code Online (Sandbox Code Playgroud)

然后很久以后开始制作过程:

open( IN, "gpg -d $file |" ) || die "Failed: gpg: $!";
Run Code Online (Sandbox Code Playgroud)

但然后以某种方式将gpg的输出重定向到tar的输入.

我可以通过构建一个循环来做到这一点:

while (<IN> ) {
  print OUT;
}
Run Code Online (Sandbox Code Playgroud)

但我想知道我是否可以通过重定向将两个进程粘合在一起.

perl redirect filehandle

3
推荐指数
1
解决办法
1889
查看次数

如何从Perl中返回文件句柄的方法中读取?

我有一个带有返回文件句柄的方法的对象,我想从该句柄中读取.以下方法不起作用,因为方法调用的右尖括号被解释为输入阅读器的右尖括号:

my $input = <$object->get_handle()>;
Run Code Online (Sandbox Code Playgroud)

这被解析为:

my $input = ( < $object- > ) get_handle() >;
Run Code Online (Sandbox Code Playgroud)

这显然是语法错误.有什么方法可以在角度运算符中执行方法调用,还是需要将它分成两个这样的步骤?

my $handle = $object->get_handle();
my $input = <$handle>;
Run Code Online (Sandbox Code Playgroud)

syntax perl filehandle

3
推荐指数
1
解决办法
173
查看次数

Perl:通过open()创建僵尸而不关闭()

问题出在这里:我有一个守护进程,它从客户端获取请求,由于请求而执行一个函数(来自某个模块),并向客户端返回一个答案.在fork()之后我关闭了STDIN,STDOUT和STDERR.一个功能是检查dmesg.为此,我通过open(DMESG,"/ bin/dmesg |")获得dmesg输出.读完之后我没有关闭这个fh,因为我认为它会在函数完成后自动关闭.但这不会发生,每次调用dmesg我都会得到一个僵尸.

关于如何重新初始化Perl的STDIN/STDOUT/STDERR?我发现"关闭STDOUT而不是重新打开的问题是,如果你打开其他文件,它们可能会得到fd 0,1或2 - 阻止你将来重新打开STDOUT." 作者:jmanning2k我认为它与它有关但我并没有真正得到它.我希望有人可以向我解释.

我知道我可以避免这个问题,例如通过qx()调用dmesg; 或者只是关闭fh,但我想了解僵尸的来源.

perl file-io filehandle zombie-process

3
推荐指数
2
解决办法
543
查看次数

如何在下次操作之前确保文件句柄已关闭?

这是我到目前为止的代码,我想知道它是否正确?

$handle = fopen($file, 'w') or die("can't open file");
$closed = fclose($handle);
while($closed){
    DOAWESOMETHINGS(); // btw I only want to have this run once for each handle
    $closed = false;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

php filehandle while-loop

3
推荐指数
1
解决办法
6055
查看次数

在perl中将文件句柄作为参数发送

是否可以将文件句柄作为参数发送到PERL中的子例程?

如果是,您是否可以帮助显示如何接收它并在子例程中使用它的示例代码段?

perl filehandle

3
推荐指数
3
解决办法
1万
查看次数

为什么ref不返回'GLOB'?

我想更好地理解typeglobs并编写小程序:

use Symbol;

open F, '>', \my $var;
t( F );
t( \F );
t( *F );
t( \*F );
sub t {
   my $fh =  shift;
   print ">>$fh<<" . ref( $fh ) ."\n";
}
Run Code Online (Sandbox Code Playgroud)

输出是:

>>F<<
>>SCALAR(0x1e67fc8)<<SCALAR
>>*main::F<<
>>GLOB(0x1e53150)<<GLOB
Run Code Online (Sandbox Code Playgroud)

为什么GLOB仅在最后一种情况下被返回?

perl ref filehandle typeglob

3
推荐指数
1
解决办法
97
查看次数