文件打开方式,读文件,写文件
文件的打开的两种方式:
f = open("data.txt","r") #设置文件对象 f.close() #关闭文件 #为了方便,避免忘记close掉这个文件对象,可以用下面这种方式替代 with open('data.txt',"r") as f: #设置文件对象 str = f.read() #可以是随便对文件的操作
一、读文件
1.简单的将文件读取到字符串中
1 f = open("data.txt","r") #设置文件对象 2 str = f.read() #将txt文件的所有内容读入到字符串str中 3 f.close() #将文件关闭
2.按行读取整个文件
#第一种方法 f = open("data.txt","r") #设置文件对象 line = f.readline() line = line[:-1] while line: #直到读取完文件 line = f.readline() #读取一行文件,包括换行符 line = line[:-1] #去掉换行符,也可以不去 f.close() #关闭文件 #第二种方法 data = [] for line in open("data.txt","r"): #设置文件对象并读取每一行文件 data.append(line) #将每一行文件加入到list中 #第三种方法 f = open("data.txt","r") #设置文件对象 data = f.readlines() #直接将文件中按行读到list里,效果与方法2一样 f.close() #关闭文件
3.将文件读入数组中
1 import numpy as np 2 data = np.loadtxt("data.txt") #将文件中数据加载到data数组里
二、写文件
1.简单的将字符串写入txt中
1 with open('data.txt','w') as f: #设置文件对象 2 f.write(str) #将字符串写入文件中
2.列表写入文件
单层列表
1 data = ['a','b','c'] 2 #单层列表写入文件 3 with open("data.txt","w") as f: 4 f.writelines(data)
双层列表
#双层列表写入文件 #第一种方法,每一项用空格隔开,一个列表是一行写入文件 data =[ ['a','b','c'],['a','b','c'],['a','b','c']] with open("data.txt","w") as f: #设置文件对象 for i in data: #对于双层列表中的数据 i = str(i).strip('[').strip(']').replace(',','').replace('\'','')+'\n' #将其中每一个列表规范化成字符串 f.write(i) #写入文件 #第二种方法,直接将每一项都写入文件 data =[ ['a','b','c'],['a','b','c'],['a','b','c']] with open("data.txt","w") as f: #设置文件对象 for i in data: #对于双层列表中的数据 f.writelines(i) #写入文件
3.数组写入文件中
#将数组写入文件 import numpy as np #第一种方法 np.savetxt("data.txt",data) #将数组中数据写入到data.txt文件 #第二种方法 np.save("data.txt",data) #将数组中数据写入到data.txt文件
例子:将TXT中的图层,转为shp
import arcpy from arcpy import env import os input = r"E:\pythontest\MDB" input2 = r"E:\pythontest\out" env.workspace = input mdbs = arcpy.ListWorkspaces("*","Access") for mdb in mdbs: mdbname = mdb[-14:-4] env.workspace=mdb arcpy.CreateFolder_management (input2, mdbname)#创建文件夹 FeatureClasses = arcpy.ListFeatureClasses() #返回的是一个列表 shppath = input2+os.sep+mdbname textpath = input+os.sep+"text.txt" f = open(textpath,"r") lines = f.readlines()#将text中按行读到list里 #print lines for line in lines: linename = line[:-1]#去掉换行符 #print linename for FeatureClass in FeatureClasses: #if FeatureClass == "TERL" or FeatureClass == "VEGL" : if FeatureClass == linename: #print FeatureClass arcpy.FeatureClassToShapefile_conversion (FeatureClass, shppath)#要素类转 Shapefile (转换) f.close() print "done"