使用Perl检查是否在Excel中打开了文件

时间:2015-09-02 18:58:02

标签: perl file file-handling

我目前可以使用此代码检查带有.csv扩展名的CSV文件是否已打开

if (-e $filename) {
    if (open(TXT,">>$filename")){
        #file is closed 
    } 
    else {
        #file is open
    }  
} 

如果我使用.txt文件而不是.csv文件尝试此操作,则测试失败。它失败意味着代码执行if语句,即使我打开文件,而它应该执行else代码语句。

但如果我使用Excel打开.txt文件,它也会失败。

如果使用记事本或Excel打开文件,如何确保测试成功?

我查了另一篇帖子How do you check if a file is open using Perl?,但它对我不起作用。有人可以建议如何解决这个问题。

更新:

if (-e $filename) {
    if (open(TXT,">>$filename")){
          #file is not in use   
    } else {
          #file is in use
}  

如果我用答案中提到的代码替换上面的代码

open TF, "<$filename" or die "unable to open file $!"; #open the existing file
if(<TF>){
    close TXT;  
} else {
    goto END;

}

它不起作用。也许我在线打开现有文件时出现了语法错误。 ?

1 个答案:

答案 0 :(得分:1)

试试这个,或者你也可以使用另一个同样的东西

open TF, "<test.txt" or die "unable to open file $!"; #open the existing test.txt file

if(<TF>)
{
       print "file is open";
}
else
{
    print "There might an issue with this file";
}

如果要检查文件处理程序是否打开,请尝试使用

 open TF, ">>test1.txt" or die "unable to open file $!";

    if(tell(TF) != -1)
    {

        print "file is open";

    }
    else
    {
        print "There might an issue with this file";
    }

告诉报告您在文件中的位置。如果它是-1,这是一个无效的位置意味着你不在文件的任何地方。