下面是小编收集整理的Perl读写文件简单示例,本文共8篇,供大家参考借鉴,欢迎大家分享。本文原稿由网友“十夜霜”提供。
篇1:Perl读写文件简单示例
这篇文章主要介绍了Perl读写文件简单示例,本文直接给出实现代码,需要的朋友可以参考下
!/usr/bin/perl -w use strict; #print “please input a string\\n”; #my $line = 这篇文章主要介绍了perl读写文件代码实例,本文直接给出实现代码,需要的朋友可以参考下 #mode operand create truncate #read < #write > yes yes #append >>yes Case 1: Throw an exception if you cannot open the file: 代码如下: use strict; use warnings; my $filename = ‘data.txt‘; open(my $fh, ‘<:encoding(UTF-8)‘, $filename) or die “Could not open file ‘$filename‘ with the error $!”; while (my $row = <$fh>) { chomp $row; print “$row\\n”; } close($fh); Case 2: Give a warning if you cannot open the file, but keep running: 代码如下: use strict; use warnings; my $filename = ‘data.txt‘; if (open(my $fh, ‘<:encoding(UTF-8)‘, $filename)) { while (my $row = <$fh>) { chomp $row; print “$row\\n”; } close($fh); } else { warn “Could not open file ‘$filename‘ $!”; } Case 3: Read one file into array 代码如下: use strict; use warnings; my $filename = ‘data.txt‘; open (FILEIN, “<”, $filename) or die “Could not open file ‘$filename‘ with the error $!”; my @FileContents = for my $l (@FileContents){ print “$l\\n”; } close FILEIN; end 这篇文章主要介绍了Lua文件读写详解,本文讲解了文件读写的简单模型和完整模型,并给出了一个操作示例,需要的朋友可以参考下 lua里的文件读写模型来自C语言,分为完整模型(和C一样)、简单模型, 1、简单模型 io.input([file]) 设置默认的输入文件,file为文件名(此时会以文本读入)或文件句柄(可以理解为把柄,有了把柄就可以找到文件),返回文件句柄。 io.output([file]) 设置默认的输出文件,参数意义同上。 io.close([file]) 关闭文件,不带参数关闭默认的文件 io.read(formats) 读入默认文件,formats取值为“*a”(读入全部)、“*n”(按数字读入)、“*l”(按行读入,默认方式)、n(即数字,读取n个字符)。 io.lines([fn]) fn文件名,若无文件,取默认文件,返回一个迭代器,可以用在for循环里。 io.write(value)向默认文件写入内容。 io.flush 把文件缓存里的操作立即作用到默认输出文件。 例子在最后。 2、完整模型 简单模型里只能处理文本类型的文件,在完整模型里可以处理二进制文件。 处理文件的一般流程为:打开文件,获取文件的句柄;以文件句柄操作文件;关闭文件。 可以看到完整模型比简单模型复杂点,但优点是功能更强大。 io.open (fn [, m]) 打开文件,返回文件句柄,fn文件名,m模式有: r 以只读方式打开文件,该文件必须存在。 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) r+ 以可读写方式打开文件,该文件必须存在。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a+ 与a类似,但此文件可读可写 b 二进制模式,如果文件是二进制文件,可以加上b + 号表示对文件既可以读也可以写 以下的file是io.open返回的文件句柄,功能与简单模式类似,不再详述。 file :close () file :read ( formats ) file :lines () file :write ( values ) file :seek ([p] [, of]) 设置文件读写的偏移,p文件偏移起始位置(取值有“set”,文件头,此为默认值,“cur”当前位置、“end”文件尾),of偏移量(默认值0,正的表示向前,负的表示向后),返回在文件里新的当前位置, file :flush () 3、示例 代码如下: ------------------简单模型----------------- --读 local file1=io.input(“1.txt”) --当前目录“1.txt”要存在,不然出错 local str=io.read(“*a”) print(str) --写 local file2=io.output(“2.txt”) --当前目录“2.txt”不需要存在 io.write(str) io.flush() io.close() --利用这几个函数可以做一个文件复制的函数 function copy(fileA,fileB) local file1=io.input(fileA) if not file1 then print(fileA..“不存在”) return end local str=io.read(“*a”) local file2=io.output(fileB) io.write(str) io.flush() io.close() end for line in io.lines(“1.txt”) do print(line) end ------------------完整模型----------------- local f=io.open(“3.txt”,“a+”) f:write(“Happy New Year!”) f:flush() f:seek(“end”,-1) --定位到文件末尾前一个字节 local str=f:read(1) --读取一个字符 print(str) --输出“!” f:close() 好久没有写些东西了,。。最近一直在用PERL写一些有趣的程序,几乎每天都有新的程序产生,实在是太有趣了!今天又写了一个用来搜索文件的小程序,虽然我以前也写过类似的,但是方法很繁琐,这次用到了一个很方便的模块:File::Find!代码明显变得简短多了,其中还加了一些自己的想法进去,可以自动修改Windows当中输入的错误,举个简单的例子,比如:程序提示输入一个查找路径,假设输入“C”,程序会自动把它改成“C:”,这样方便查找。还有,在Windows系统中,输入“/”和“\”是都支持的,这样会导致打印出的结果显得很凌乱,如:C:\\\\Perl//searchMyFile.pl,程序都会统一将其改成类似Unix系统中的“/”的形式,如:C:/Perl/searchMyFile.pl。还有很多自动修改的功能,都是用到了PERL强大的正则表达式,不多说了,我把我的代码复制上来,如果大家有兴趣可以帮忙纠正:-) #!/usr/bin/perl use strict; use warnings; use Cwd; use File::Find; #################################################################### File name : searchMyFile.pl Written by : B.S.F Last modified : 05/18/ Description : Easy way to search some file(s) with a keyword! #################################################################### # Input a path to search... print “Enter a path: ”; chomp(my $path = ); # Change “~” or “~/” to your home directory on Linux/FreeBSD platform. $path =~ s/~|~\\//$ENV{'HOME'}/; } # Deal with some format of path on Windows NT platform. else { # Change “C” to “C:”, etc. $path .= “:” if $path =~ /^\\w$/; # Change “C:\\\\” to “C:”, etc. $path =~ s/\\W+/:/ if $path =~ /^\\w\\W+$/; # Change “C:\\\\Perl\\” to “C:\\\\Perl”, etc. $path =~ s/\\W+$// if $path =~ /^\\w\\W+\\w+/; # Change “C:\\\\Perl” to “C:/Perl”, etc. $path =~ s/\\W+/:\\// if $path =~ /^\\w\\W+\\w+/; } # Test if can enter into the path or not, if not, terminated! chdir($path) or die “Couldn't get into $path: $!”; # Input some keyword... print “Enter a keyword: ”; chomp(my $key = ); # Change the “.” character to the actually meanings, matching some postfix. # Such as “.jpg”, “.txt”, “.doc”, etc. $key =~ s/\\./\\\\./; # Print some information... print “Searching under \\”“, getcwd, ”\\“...\\n”; # # Searching... # sub search { # Get rid of the directory matches “System Volume Information”(some boring stuff on Windows...). $File::Find::prune = 1 if /System Volume Information/; # Open the “i” switch to mach more, such as “.JPG” or “.jpg”... if (/$key/i) { # “ my $target = (-d) ? “ # A neat layout for Windows... $target =~ s/:/:\\// if $target !~ /\\//; print “$target\\n”; } } # Begin to search... find(\\&search, $path); 作者:adupt 字体:[增加 减小] 类型: 这篇文章主要介绍了Python读写文件方法,实例分析了Python读写文件常用的方法与使用技巧,需要的朋友可以参考下 本文实例总结了Python读写文件方法,分享给大家供大家参考。具体分析如下: 1.open 使用open打开文件后一定要记得调用文件对象的close方法。比如可以用try/finally语句来确保最后能关闭文件。 file_object = open(‘thefile.txt‘)try: all_the_text = file_object.read( )finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。 2.读文件 读文本文件 input = open(‘data‘, ‘r‘)#第二个参数默认为rinput = open(‘data‘) 读二进制文件 代码如下: input = open(‘data‘, ‘rb‘) 读取所有内容 file_object = open(‘thefile.txt‘)try: all_the_text = file_object.read( )finally: file_object.close( ) 读固定字节 file_object = open(‘abinfile‘, ‘rb‘)try: while True: chunk = file_object.read(100) if not chunk:break do_something_with(chunk)finally: file_object.close( ) 读每行 代码如下: list_of_all_the_lines = file_object.readlines( ) 如果文件是文本文件,还可以直接遍历文件对象获取每行: for line in file_object: process line 3.写文件 写文本文件 代码如下: utput = open(‘data‘, ‘w‘) 写二进制文件 代码如下: utput = open(‘data‘, ‘wb‘) 追加写文件 代码如下: utput = open(‘data‘, ‘w+‘) 写数据 file_object = open(‘thefile.txt‘, ‘w‘)file_object.write(all_the_text)file_object.close() 写入多行 代码如下: file_object.writelines(list_of_text_strings) 注意,调用writelines写入多行在性能上会比使用write一次性写入要高。 在处理日志文件的时候,常常会遇到这样的情况:日志文件巨大,不可能一次性把整个文件读入到内存中进行处理,例如需要在一台物理内存为 2GB 的机器上处理一个 2GB 的日志文件,我们可能希望每次只处理其中 200MB 的内容。 在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。以下面的代码为例: file = open(‘test.log‘, ‘r‘)sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0: position = file.tell() lines = file.readlines(sizehint) 每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint 指定的值大一点(除最后一次调用 readlines(sizehint) 函数的时候), 通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。 file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。在python中一切都是对象,file也不例外,file有file的方法和属性。下面先来看如何创建一个file对象: file(name[, mode[, buffering]]) file()函数用于创建一个file对象,它有一个别名叫open(),可能更形象一些,它们是内置函数。来看看它的参数。它参数都是以字符串的形式传递的。name是文件的名字。 mode是打开的模式,可选的值为r w a U,分别代表读(默认) 写 添加支持各种换行符的模式。用w或a模式打开文件的话,如果文件不存在,那么就自动创建。此外,用w模式打开一个已经存在的文件时,原有文件的内容会被清空,因为一开始文件的操作的标记是在文件的开头的,这时候进行写操作,无疑会把原有的内容给抹掉。由于历史的原因,换行符在不同的系统中有不同模式,比如在 unix中是一个/n,而在windows中是‘/r/n‘,用U模式打开文件,就是支持所有的换行模式,也就说‘/r‘ ‘/n‘ ‘/r/n‘都可表示换行,会有一个tuple用来存贮这个文件中用到过的换行符。不过,虽说换行有多种模式,读到python中统一用/n代替。在模式字符的后面,还可以加上+ b t这两种标识,分别表示可以对文件同时进行读写操作和用二进制模式、文本模式(默认)打开文件。 buffering如果为0表示不进行缓冲;如果为1表示进行“行缓冲“;如果是一个大于1的数表示缓冲区的大小,应该是以字节为单位的。 file对象有自己的属性和方法。先来看看file的属性。 closed #标记文件是否已经关闭,由close()改写 encoding #文件编码 mode #打开模式 name #文件名 newlines #文件中用到的换行模式,是一个tuple softspace #boolean型,一般为0,据说用于print file的读写方法: F.read([size]) #size为读取的长度,以byte为单位 F.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分 F.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。 F.write(str) #把str写到文件中,write()并不会在str后加上一个换行符 F.writelines(seq) #把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西。 file的其他方法: F.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError F.flush() #把缓冲区的内容写入硬盘 F.fileno() #返回一个长整型的”文件标签“ F.isatty() #文件是否是一个终端设备文件(unix系统中的) F.tell() #返回文件操作标记的当前位置,以文件的开头为原点 F.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的。 F.seek(offset[,whence]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。 F.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。 希望本文所述对大家的Python程序设计有所帮助。 *找到具有指定特征的文件* $path = “/path/to/dir/”;opendir DIR, $path;@arr1 = readdir DIR;@arr2 = grep{-T “$path$_”} @arr1; #text files only@arr3 = grep{!-d “$path$_”} @arr1; #no directories@arr4 = grep{-s “$path$_” 1024} @arr1; #less than 1K $path = “/path/to/dir/”;opendir DIR, $path;@arr1 = readdir DIR;@arr2 = grep{-T “$path$_”} @arr1; #text files only@arr3 = grep{!-d “$path$_”} @arr1; #no directories@arr4 = grep{-s “$path$_” < 1024} @arr1; #less than 1K代码解释:假如被测试的目录项是一个文本文件,那么 -T 文件操作符就会返回真, Perl小技巧:文件操作自动测试脚本语言 原文转自:www.ltesting.net Python列表推导式的使用方法 python设置windows桌面壁纸的实现代码 python 获取文件列表(或是目录例表) Python开发的单词频率统计工具wordsworth Python ORM框架SQLAlchemy学习笔记之安装 Python使用urllib2获取网络资源实例讲解 复制粘贴功能的Python程序 Python urllib模块urlopen与urlretriev python Django模板的使用方法(图文) python生成指定尺寸缩略图的示例 Python入门教程 超详细1小时学会 python 中文乱码问题深入分析 比较详细Python正则表达式操作指 Python字符串的encode与decode研 Python open读写文件实现脚本 Python enumerate遍历数组示例应 Python 深入理解yield Python+Django在windows下的开发 python 文件和路径操作函数小结 python 字符串split的用法分享 2013-12-12python函数返回多个值的示例方法 2014-01-01python构造icmp echo请求和实现网络探测器功能代码分享 2014-07-07Python库urllib与urllib2主要区别分析 2013-12-12python使用urllib2模块获取gravatar头像实例 2013-04-04python读取注册表中值的方法 2013-10-10Python 错误和异常小结 2014-04-04python使用PyFetion来发送短信的例子 2011-03-03布同 Python中文问题解决方法(总结了多位前人经验,初学者必看) 2014-02-02python使用7z解压软件备份文件脚本分享 2008-12-12python 数据加密代码篇2:perl读写文件代码实例
篇3:Lua文件读写详解
篇4:Perl文件搜索脚本脚本安全
篇5:Python读写文件方法总结
篇6:Perl小技巧:文件操作自动测试脚本语言
use File::Find;find(\\&handleFind, 'imac:documents:code');sub handleFind{ my $foundFile = $File::Find::name; print “$foundFile\\n” if ($foundFile =~ /\\.html?$/i);}RESULT: imac:documents:code:index.html imac:documents:code:perl:example.HTM 运行结果: 代码讨论:那些工作于 Unix 系统的 Perl程序员可以非常简便的利用 UNIX 上提供的工具来完成许多日常的工作,比如递归的列出指定目录下的所有目录项(也就是列出指定目录及指定目录子目录下的所有目录项目)。然而 Perl 的一个最大的特征就是可以运行于很多的平台上。所以如果你碰巧工作在一个非 UNIX 的平台,或者如果你虽工作在 UNIX平台,但不喜欢使用系统工具写脚本,你可以选择 Perl。要完成这些巧妙的工作,你需要使用 perl 中的 File:Find 模块。当你加载了这个模块的时候,你就可以使用其中的 find 子函数,在调用这个函数的时候,需要带参数:第一个参数是一个函数的引用,这个函数由你自己建立,每次一个文件被找到的时候,它都会运行。接下来的一个参数是一串你想要搜索的路径。我写的这个示例脚本是运行在 Macintosh OS 8.x 系统上的,所以我使用了 Mac 系统的路径分隔符 :。如果是在 Windows,你可以用反斜杠,如果是在 Unix 系统则是正斜杠(至于在 Amiga 系统上用什么我就不知道了)。总之,find 函数将会在每次找到一个文件的时候调用你给出的子函数,而且会对子目录进行查找。在我的 handledfind 子函数中,我通过这个模块特定变量 $File::Find::name 来获得每次 find 找到的文件名。然后,就可以对该文件执行任何你想的测试,在上面的例子中,我们输出有 .html 的扩展名文件名。 *文件读操作* *一次读入整个文件内容。*open FH, “
运行结果:一下就显示了所有的文件内容,此刻你应该非常的自豪。:) 代码讨论:尖括号 对文件句柄进行操作,在标量上下文中它将返回文件的下一条记录,在数组上下文中它将返回所有的记录。在默认的情况下,文件中的记录被认为是由换行符分开(例如回车或其他代表新行开始的字符)。你可以重新设定这个默认的分隔符,然后 Perl 将会以你指定的分隔符为准来替代换行符。全局变量 $/ 里存储了输入文件的分隔符,如果你把 $/ 的值设置为 undef ,那么 Perl 将会认为整个文件是一条记录(因为此刻已经没有文件分隔符了)。牢记 $/ 是全局变量,千万不要在脚本的其他地方不经意的改变它,这个错误将很难被发现。你可能会问,我们能否不改变 $/,而采用把文件的所有记录读到一个数组中,然后把数组联合成一个很长的字符串(比如 $slurp = join(“”,open(MYOUT, “>bottle.txt”);*STDOUT = *MYOUT;print “message”;
运行结果:文本文件 bottle.txt 现在包含 message 字符串。代码讨论:以前可能你配合使用过 Print 函数和文件句柄,但是你是否知道就算你没有使用文件句柄,Perl 也默认你在使用一个称为 STDOUT 的句柄?C 程序员知道 STDOUT 代表标准输出,也就是通常的屏幕,或终端窗口(或者是 CGI 程序的输出端 - 浏览器)。在这里我们完成的工作是创建我们自己的文件句柄,它指向一个给定的文件,然后我们做了一件比较鬼的工作,使用 * 前缀把 STDOUT 转换为 typeglob 类型。Typeglob 类型的数据可以有别名,这样一个变量可能会指向另一个其他名字的变量。上面第二行代码使 STDOUT 指向 MYOUT 变量。所以执行 print 操作时的默认输出对象也就成为了我们创建的文件句柄。 *同时向两个文件句柄执行写操作*use IO::Tee; $tee = IO::Tee->new(“>>debuglog.txt”, \\*STDOUT); print $tee “an error ocurred on ”.scalar(localtime).“\\n”;
运行结果:an error ocurred on Fri Feb 23 21:44:20 代码讨论:如果,由于种种原因你想要同时向两个位置写入同一个字符串,这和 UNIX 下的 tee 工具的用途一样。即使你不是工作在 Unix平台上,Perl 也通过 Tee 模块为你提供这个功能。Tee 模块可以在 CPAN下载,你应该把它安装到 Perl 的 IO 库文件夹中。Tee 模块以 OOP 方式编写,所以使用它之前你应该首先使用它的 new 方法来创建一个 Tee 对象,整个过程需要两个参数,每个参数既可以是代表文件句柄的字符串,也可以是一个对已打开的文件句柄的引用。在上面的例子中,我们用一个字符串来代表一个以附加模式打开的文件句柄,它指向名为 debuglog.txt 的文件,另一个参数是系统内置的文件句柄 STDOUT,整个句柄是系统自动创建的,print 函数默认情况对它进行操作。为了得到一个文件句柄的引用我们需要对一个 typeglob 类型的数据使用反斜杠。Typeglob 可以代表任何已命名的某个变量,不论它是数组,散列还是标量等。使用 * 很有必要,因为文件句柄自己没有前缀符号。new 操作符返回 Tee 类的一个实例对象,然后我们把整个实例赋给 $tee 标量。现在,无论什么时候我们向 $tee 进行写入操作,我们都同时向两个位置进行写操作。 *更多文件操作。。。* *从一个文件的完全路径中找出它的名字*use File::Basename;$path = “/docs/sitecircus.com/html/tricks/trick.of.the.week.html”;$basename = basename($path, “.html”);print $basename;
运行结果:trick.of.the.week 代码讨论:好了,成功了。问题是要找出文件的名字,要不带任何路径前缀,不带任何扩展名。File::Basename 模块可以使这很容易实现,我们只需要把文件的完全路径还有要剔除的扩展名传给它。上面的 path 变量是文件的完全路径,注意文件分隔符是 /,这个字符很特殊,因为它是操作系统的保留字符。这里你不能在文件名里使用系统的分隔符。你应该知道当今流行的操作系统都使用自己独特的文件分隔符:Unix使用 /,Windows 使用 \\,Macintosh 使用 :(顺便说一下,在 Windows 上的 Perl 脚本中,你既可以使用 \\也可以使用 /作为文件分隔符,Perl 的解释器能理解你的意思)。File::Basename,当然,能正确在完全路径中找到文件名,不论时在什么系统下。 *改变文件的所有者*($uid, $gid) = (getpwnam($username))[2,3] or die “$user not in passwd file”;chown ($uid, $gid, $file) or warn “couldn't chown $file.”;
运行结果:无输出代码讨论:有的时候,你可能知道一个用户名,而你想用这个用户名做些事,比如改变一个文件的所有者。但是不幸的是,Perl 的 chown 命令不能接受用户名作为参数,但是可以接受一对数字:userid 和 groupid。虽然有这些不便之处,Perl 并没有让我们陷入困境,我们可以把用户名作为 getpwnam 函数的参数,获得一个数组,里面包含了用户名对应的 userid 和 groupid,分别对应着数组里的第二和第三个元素。篇7:Python 文件读写操作实例详解
最近更 新
热 点 排 行
篇8:Python读写Excel文件的实例
- 专利文件范文2023-05-05
- Elf文件DT2023-06-28
- folder.htt的文件问题2023-08-05
- Filemanagement(文件管理)2023-07-20
- 文件保密工作自查报告2024-06-07
- 文件范文写法2023-04-16
- 呈请文件范文2023-09-14
- asp.net文件的方法2022-12-20
- “读写一体化”作文教学初探2022-12-17
- 初中语文“读写一体”课堂教学研究2023-06-14