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()郑州妇科医院哪家好 http://m.120ask.com/zhenshi/

  读出一行信息。

  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)

  得出结果


猜你喜欢

转载自blog.51cto.com/14335413/2486032