0
点赞
收藏
分享

微信扫一扫

Python-file

hoohack 2022-11-23 阅读 136


目录

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.]]


举报

相关推荐

0 条评论