Как я определяю, является ли дескриптор файла Perl чтением, или запишите дескриптор?

Несмотря на то, что это инструмент для программистов на Python, Pyright реализован на TypeScript, работающем на Node, и документация сообщает нам , что его можно установить с помощью одного из менеджеров пакетов для этой экосистемы, такого как [ 117] NPM или Пряжа . Если вы хотите установить его для использования в любом месте системы (а не только в конкретном проекте Node), вам потребуется установка global.

npm install --global pyright

или

yarn global add pyright

Это добавит интерфейс командной строки pyright.

$ pyright
Usage: pyright [options] file...

Вы можете запустить это для своих файлов, просто указав их в командной строке, но для проекта вы можете захотеть создать файл pyrightconfig.json , идентифицирующий файлы как проверил и интерпретаторы Python, библиотеки и определения типов, которые он должен использовать. Некоторые из этих опций также могут быть переданы в качестве аргументов командной строки , но не все из них.

13
задан Chas. Owens 23 March 2009 в 04:15
поделиться

1 ответ

Взгляните на fcntl опции. Возможно, F_GETFL с O_ACCMODE.

Править: Я сделал немного поиска с помощью Google и проигрывания за ланчем и здесь являюсь некоторыми, вероятно, непортативный код, но это работает на мое поле Linux и вероятно какую-либо систему Posix (возможно, даже Cygwin, который знает?).

use strict;
use Fcntl;
use IO::File;

my $file;
my %modes = ( 0 => 'Read only', 1 => 'Write only', 2 => 'Read / Write' );

sub open_type {
    my $fh = shift;
    my $mode = fcntl($fh, F_GETFL, 0);
    print "File is: " . $modes{$mode & 3} . "\n";
}

print "out\n";
$file = new IO::File();
$file->open('> /tmp/out');
open_type($file);

print "\n";

print "in\n";
$file = new IO::File();
$file->open('< /etc/passwd');
open_type($file);

print "\n";

print "both\n";
$file = new IO::File();
$file->open('+< /tmp/out');
open_type($file);

Пример произвел:

$ perl test.pl 
out
File is: Write only

in
File is: Read only

both
File is: Read / Write
7
ответ дан 2 December 2019 в 01:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: