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

模式

使用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方法,会读取文件所有的内容,执行输出如下:

aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
ccccc
ddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeee

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

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 os
path = "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.xlsx
E:\gamesrc\Server\resource\solider\soliderExchange.xlsx
E:\gamesrc\Server\resource\solider\soliderExplain.xlsx
E:\gamesrc\Server\resource\solider\soliderRecruit.xlsx
E:\gamesrc\Server\resource\solider\soliderShop.xlsx
E:\gamesrc\Server\resource\solider\soliderUpgrade.xlsx
E:\gamesrc\Server\resource\string.xlsx
E:\gamesrc\Server\resource\template\mail.xlsx
E:\gamesrc\Server\resource\title\title.xlsx
E:\gamesrc\Server\resource\trade\TradeAuction.xlsx
E:\gamesrc\Server\resource\trade\TradeShop.xlsx
E:\gamesrc\Server\resource\union\boss\unionboss.xlsx
E:\gamesrc\Server\resource\union\union.xlsx
E:\gamesrc\Server\resource\union\unionLanguage.xlsx
E:\gamesrc\Server\resource\vip\vipConfig.xlsx
.........

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值