目录
1 eval 执行字符串表达式
2 json处理字典
3 csv保存数组
4 判断是否为文件夹
5 删除文件夹,或文件
6 多维数组,numpy,npy,npz格式
7 savetxt()和loadtxt() txt格式
1 eval()
函数用来执行一个字符串表达式,并返回表达式的值
x = 7
print( eval( '3 * x' ) ) #等于21
print( eval('pow(2,2)') )
print( eval('2 + 2') )
2 json文件
总计:
son.dumps()用于将字典形式的数据转化为字符串,
json.loads()用于将字符串形式的数据转化为字典,
json.load(open(fileName,"r")) 用于打开json文件,同时转化为字典#
json.dump(data, file)用于将数据data转化为str保存到file中
import json
data = {#定义字典
'name' : 'Connor',
'sex' : 'boy',
'age' : 29
}
print("data\n",data,"\n")
data1=json.dumps(data) #dumps将字典转化为字符串
print("json.dumps(data)\n",data1,"\n")
data2=json.loads(data1)#loads将字符串转化为字典
print("json.loads(data1)\n",data2,"\n")
print(type(data))#输出原始数据格式
print(type(data1))#输出经过json.dumps的数据格式
print(type(data2))#输出经过json.loads的数据格式
# 如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到json.dump(),
# json.load()用于从json文件中读取数据.
with open('data3.json','w',encoding='utf-8') as f: #如果没有data3.json就创建
f.write(data1)
print()
'''
r :只读
r+ : 读写
w : 新建(会对原有文件进行覆盖)
a : 追加
b : 二进制文件
'''
# data4 = json.load(open("data3.json",'r'))
# print(data4)
with open('data3.json','r') as f3:
data4 = json.load(f3) #用于读取json数据
print("data4的name\n",data4["name"])
print(f3)
import os
my_file = 'data3.json' # 文件路径
if os.path.exists(my_file): # 如果文件存在
#删除文件,可使用以下两种方法。
os.remove(my_file) # 则删除
print("删除了中间文件")
结果:
data
{'name': 'Connor', 'sex': 'boy', 'age': 29}
json.dumps(data)
{"name": "Connor", "sex": "boy", "age": 29}
json.loads(data1)
{'name': 'Connor', 'sex': 'boy', 'age': 29}
<class 'dict'>
<class 'str'>
<class 'dict'>
data4的name
Connor
<_io.TextIOWrapper name='data3.json' mode='r' encoding='cp936'>
删除了中间文件
3 csv保存数组
import json#json文件格式
import csv#csv文件格式
path_csv = f"data.csv"
data_csv = pd.read_csv(path_csv)#打开csv文件
print(data_csv['index'].values[0]) #打印index列的第0行
node=[]
open_node=np.load(path_npy) #打开.npy文件
for i in range(10):
node.append(open_node[i]) #向数列中添加数据
#将上面的list代码跟对应节点数写到df
df = pd.DataFrame({"node":node, #将数列转化为二维,
"label":label,
"transf":transf,
"wgsize":wgsize})
df.to_csv(result_path) #csv保存
4判断输入的是文件夹还是文件
path = sys.argv[1]
if os.path.isfile(path):
if os.path.exists(path):
pass
elif elif os.path.isdir(path):
for filename in os.listdir(path): # 获取当前路径下的文件名
real_path = os.path.join(path, filename)
if os.path.isfile(real_path):
pass
5 删除文件夹,或文件
import os
my_file = 'data3.json' # 文件路径
if os.path.exists(my_file): # 如果文件存在
#删除文件,可使用以下两种方法。
os.remove(my_file) # 则删除
print("删除了中间文件")
6 多维数组,numpy
处理npy,npz文件
import numpy as np
a = np.arange(0,12)
print(a) #构建数组,0-11
a.shape = 3,4 #数组分为三行四列
print(a)
np.save("a.npy",a)#保存多维数组
c = np.load("a.npy")
print(c)
print("np.save,load---------------\n")
a = np.array([ #二维数组
[1,2,3],
[4,5,6],
[7,8,9]
])
print(a)
b = np.arange(0,1.0,0.1) #一维数组,
print(b)
c = np.sin(b) #对应的sin值
print(c)
np.savez("result.npz",a,b,sin_array=c) #打包保存
with np.load("result.npz") as r:
# r = np.load("result.npz")
print("r[arr_0] \n",r["arr_0"] )
print("\nr[arr_1]\n",r["arr_1"] )
print("\nsin_array\n",r["sin_array"])
7 savetxt()和loadtxt()
import numpy as np
a = np.arange(0,12,0.5).reshape(4,-1)
print(a,"\n")
np.savetxt("a.txt",a)
f = np.loadtxt("a.txt")
print(f)
输出:
[[ 0. 0.5 1. 1.5 2. 2.5]
[ 3. 3.5 4. 4.5 5. 5.5]
[ 6. 6.5 7. 7.5 8. 8.5]
[ 9. 9.5 10. 10.5 11. 11.5]]
[[ 0. 0.5 1. 1.5 2. 2.5]
[ 3. 3.5 4. 4.5 5. 5.5]
[ 6. 6.5 7. 7.5 8. 8.5]
[ 9. 9.5 10. 10.5 11. 11.5]]
np.savetxt("a.txt",a,fmt="%d",delimiter=",") #格式转为int,用逗号分开
f = np.loadtxt("a.txt",delimiter=",") #读取的时候也需要添加delimiter
print(f)
输出:
[[ 0. 0. 1. 1. 2. 2.]
[ 3. 3. 4. 4. 5. 5.]
[ 6. 6. 7. 7. 8. 8.]
[ 9. 9. 10. 10. 11. 11.]]