shell脚本运行python命令 - 江南烟雨尘

时间:2024-02-29 22:12:40

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对空格敏感,多余的空格会报错(不是所有的都会报错,但是何必为难自己?),不要加多余的空格