snljty2 发表于 2023-3-12 17:37 赞,你的代码确实很pythonic! ![]() |
本帖最后由 snljty2 于 2023-3-13 09:19 编辑 chuan437 发表于 2023-3-12 17:05 4L的也是一种方式。另外Python里肯定不用这么麻烦。可以找本教材看看Python格式化字符串的部分。就我所知至少有三种比较简单而且常见的写法: 第一种,C语言风格的%格式化字符串,最古老的一种:
第二种,用Python2.6和3.0新加的string类的的format方法:
第三种:用Python 3.6开始引入的f-string
可能还有一些使用string.Template之类的方法,不深究了。 顺便说一下上面Shell的写法
|
snljty2 发表于 2023-3-12 12:29 好的,谢谢。还是你的第二个方法简捷,赞 本来我按照社长的建议,用0补齐文件名,python脚本如下: import os filePath='C:\\Users\\Administrator\\Desktop\\1' def fileNameAlign(filePath,connector='_'): os.chdir(filePath) fileList=[i for i in os.listdir() if connector in i] print(fileList) for i in fileList: name,numType=i.split(connector) num,typeName=numType.split('.') while len(num)<3: num='0'+num print() os.rename(i,name+'_'+num+'.'+typeName) fileNameAlign(filePath,connector='_') #使用时需要设置文件的路径,如果是Gaussian批量保存的出来的多个文件,用默认的下划线_作为文件名连接符即可。 |
shell(bash)建议后面通过管道加个sort -V或者sort -n 效果跟三楼一样
即
|
这本来就是按文件名顺序的字典排序法...比如字符'3'在字符'4'前面,39.fch和3.fch比,英文句号'.'的ASCII码是46,数字'3'是51,点在数字前面,所以_3.fch就应该排在_39.fch和_40.fch之间。如果你想按数值大小排序而不是按字符串的字典排序法,要么如卢老师说,用shell的printf之类的命令让前一步固定输出几位数字,不足的用0补全,比如_03.fch,要么循环用ls -v,比如
|
参与人数Participants 1 | eV +2 | 收起 理由Reason |
---|---|---|
| + 2 |
产生文件的时候把十位数用0补齐 |
手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图
GMT+8, 2025-8-14 08:50 , Processed in 0.183704 second(s), 26 queries , Gzip On.