python处理txt文件的常用操作

1.打开文件

#方法1,这种方式使用后需要关闭文件
f = open("data.txt","r")
f.close()

#方法2,使用文件后自动关闭文件
with open('data.txt',"r") as f: 

打开文件的模式主要有,r、w、a、r+、w+、a+

r:以读方式打开文件,可读取文件信息。
w:以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容
a:以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
r+:以读写方式打开文件,可对文件进行读和写操作。
w+:消除文件内容,然后以读写方式打开文件。
a+:以读写方式打开文件,并把文件指针移到文件尾。

 

2.读取文件

f.read([count])    读出文件,如果有count,则读出count个字节,如果不设count则读取整个文件。
f.readline()    读出一行信息。
f.readlines()    读出所有行,也就是读出整个文件的信息。

假设我们读取的文件如下:

readline()读取的数据为str类型:

read()读取数据为str类型:

readlines()读取数据为list类型,而且会把换行符读入:

 

3.如何把txt文件数据存入numpy数组

还是以上面文件做例子,首先通过read()将文件内容存为str

file_path = ("D:/FDTD/test.txt")
with open(file_path,'r') as f:
    file = f.read()
print(file)
print(type(file))

然后对str进行分割,然后转化为numpy数组:

a = file.split()
print(a)
a = np.array(a)
a = a.reshape(3,5)
print(a)

结果如下:

 

4.一些常用操作

f.close()

关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。

f.fileno()

获得文件描述符,是一个数字

f.flush()

刷新输出缓存

f.isatty()

如果文件是一个交互终端,则返回True,否则返回False。

f.read([count])

读出文件,如果有count,则读出count个字节。

f.readline()

读出一行信息。

f.readlines()读出所有行,也就是读出整个文件的信息。
f.seek(offset[,where])把文件指针移动到相对于where的offset位置。where为0表示文件开始处,这是默认值 ;1表示当前位置;2表示文件结尾。
f.tell()获得文件指针位置。

f.truncate([size])

截取文件,使文件的大小为size。

f.write(string)

把string字符串写入文件。

f.writelines(list)

把list中的字符串一行一行地写入文件,是连续写入文件,没有换行。

 

5.批量读取txt文件

我们使用os模块中的listdir来列举所有的txt文件:

file_path = ("D:/FDTD/t")
files= os.listdir(file_path)
for file in files:
    file_path2=file_path+ '/' + file
    with open(file_path2,"r") as f:

假如文件中都是n行5列数据,我们需要对其进行合并:

file_path = ("D:/FDTD/t")
files= os.listdir(file_path)
time = 0
for file in files:
    file_path2=file_path+ '/' + file
    with open(file_path2,"r") as f:
        t = f.read()    #读取文件数据,此时为文件内容为字符串形式
        t = t.split()    #按空格或换行对字符串进行分割
        t = np.array(t)    #将list转化为numpy数组
        t = t.reshape(-1,5)    
        print('\n'+file_path2+':')
        print(t)    #打印一个文件的数据
        if time ==0:
            a = t    #如果是第一个文件,则令a=t
        else:    
            a = np.vstack((t,a))    #如果不是第一个文件,则将t与前面文件数据进行拼接
        time += 1
print('\n合并后:')
print(a)

输出结果:

 

  • 158
    点赞
  • 908
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值