我目前可以使用此代码检查带有.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;
}
它不起作用。也许我在线打开现有文件时出现了语法错误。 ?
答案 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,这是一个无效的位置意味着你不在文件的任何地方。