#方法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+:以读写方式打开文件,并把文件指针移到文件尾。
f.read([count]) 读出文件,如果有count,则读出count个字节,如果不设count则读取整个文件。
f.readline() 读出一行信息。
f.readlines() 读出所有行,也就是读出整个文件的信息。
假设我们读取的文件如下:
readline()读取的数据为str类型:
read()读取数据为str类型:
readlines()读取数据为list类型,而且会把换行符读入:
还是以上面文件做例子,首先通过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)
结果如下:
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中的字符串一行一行地写入文件,是连续写入文件,没有换行。 |
我们使用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)
输出结果: