java程序员的python之路(文件操作)

来源:互联网 发布:java jvm 工作原理 编辑:程序博客网 时间:2024/06/11 00:34

模式

使用open方法来打开一个文件,可以使用适当的模式打开一个文件,比如读,写,追加等。常见模式如下:

模式 描述 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

读取文件内容

我们新建一个文本文件,在其中随意输入几行内容,然后写代码读取这个文件的内容。
test.txt文件内容如下:

aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
ccccc
ddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeee

读取文件内容代码如下:

file = open("C:\\Users\\Administrator\\Desktop\\qqqq.txt","r+")s = file.read()print(s)file.close()

read方法,会读取文件所有的内容,执行输出如下:

aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccdddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeee

我们也可以一行一行的读取文件,如下:

file = open("C:\\Users\\Administrator\\Desktop\\test.txt","r+")s = file.readline()while s != "":    print(s,end="")    s = file.readline()file.close()

还有更简单的方法,像下面这样:

file = open("C:\\Users\\Administrator\\Desktop\\test.txt","r+")for line in file:    print(line,end="")file.close()

输出结果完全一致。

写文件

使用write方法,可以把内容写入到文件。需要注意的就是,文件对象的当前位置,也就是也就是从文件开始到当前位置的字节数,可以使用tell函数来获得这个位置,代码如下:

file = open("C:\\Users\\Administrator\\Desktop\\test.txt","w+")print(file.tell())

输出如下:

0

可以看到,打开一个文件,位置处于0的位置,也就是说,我们现在如果向文件中写入内容,就会从0的位置开始写。如果0的位置有数据,那么就会别覆盖。如果不想被覆盖,而是要追加内容,就需要指定文件位置到文件末尾,使用seek方法。seek方法介绍:

  • seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
  • seek(x,1) : 表示从当前位置往后移动x个字符
  • seek(-x,2):表示从文件的结尾往前移动x个字符

    追加内容,代码如下:

 file = open("C:\\Users\\Administrator\\Desktop\\test.txt","r+")file.seek(0,2)file.write("fffff\n")

打开文件,可以看到,内容已经追加到文件的末尾。我们也可以直接使用a(追加)模式直接写入内容,像下面这样:

file = open("C:\\Users\\Administrator\\Desktop\\test.txt","a")file.write("fffff\n")

文件的读写就简单的介绍这些,其他的模式可以自行尝试。

os模块

os 模块提供了非常丰富的方法用来处理文件和目录,下面我们就用一个例子来介绍一下os模块的使用,这个例子就找出一个目录下(包括子目录)所有的excel文件,代码如下:

#导入os模块import ospath = "E:\\gamesrc\\Server\\resource"def findAllExcel(path):    #listdir,目录下所有文件    files = os.listdir(path)    for filename in files:        #得到文件的绝对目录        filepath = os.path.join(path,filename)        #文件是否一个目录        if os.path.isdir(filepath):            findAllExcel(filepath)        else:            #文件是否Excel文件            if filename.endswith("xlsx"):                print(filepath)findAllExcel(path)

输出结果如下:

E:\gamesrc\Server\resource\solider\soliderEvolution.xlsxE:\gamesrc\Server\resource\solider\soliderExchange.xlsxE:\gamesrc\Server\resource\solider\soliderExplain.xlsxE:\gamesrc\Server\resource\solider\soliderRecruit.xlsxE:\gamesrc\Server\resource\solider\soliderShop.xlsxE:\gamesrc\Server\resource\solider\soliderUpgrade.xlsxE:\gamesrc\Server\resource\string.xlsxE:\gamesrc\Server\resource\template\mail.xlsxE:\gamesrc\Server\resource\title\title.xlsxE:\gamesrc\Server\resource\trade\TradeAuction.xlsxE:\gamesrc\Server\resource\trade\TradeShop.xlsxE:\gamesrc\Server\resource\union\boss\unionboss.xlsxE:\gamesrc\Server\resource\union\union.xlsxE:\gamesrc\Server\resource\union\unionLanguage.xlsxE:\gamesrc\Server\resource\vip\vipConfig.xlsx.........

这里用到几个常用的方法,os还有很多方法可用,比如修改文件权限,创建文件和目录等等的操作。为了简单起见,就不一一列举了。

原创粉丝点击