shell脚本运行python命令
1.现在的python通常使用argparse来传参,可以在运行python文件时对超参数的值进行改变,可以不用改变代码,也可以多组参数同时测试。
但是如果要对大量超参数进行尝试(炼丹)时,手动输入似乎力有不逮。因此shell脚本就有用武之地。
可以用一个循环将所有超参数依次输入。
for((i=1000;i<=40000;i=i+1000)); do python test.py -m params/${i}.pth done
但是要注意,shell在windows下的换行符和linux下的不通用。
解决方法:
https://blog.csdn.net/MyOracleFei/article/details/103142172?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control
(在notepad++ 中,编辑→文档格式转换→转为Unix格式,然后再去Linux中运行脚本,就可以了。)
2.but:
filename='test_0.0.lst' for line in $(cat $filename) do echo "data_dir = '../result/param_0.0/${line}'" done
-----------------------------------------
实际输出: "ir="/lee/bdcn_500_full 期待输出: dir="/lee/bdcn_500_full"
这是因为依赖的test_0.0.lst文件编码方式是windows的,乱码了。需要将test_0.0.lst文件同样用Notepad++转码一下。
3.另外:如果觉得Notpad++麻烦,也可以在pycharm里面直接改编码:界面右下角
选这个就可以。
虽然看起来不如notpad++直观(notpad++要设置可见所有字符),但是胜在方便。
4.注意:与python不同,shell对空格敏感,多余的空格会报错(不是所有的都会报错,但是何必为难自己?),不要加多余的空格