我想更改特定文件夹中的文件的扩展名.我在论坛上读到了这个主题.使用想法,我已经编写了以下代码,我希望它可以工作,但事实并非如此.我会感谢任何找到我的错误的指导.
import os,sys folder = 'E:/.../1936342-G/test' for filename in os.listdir(folder): infilename = os.path.join(folder,filename) if not os.path.isfile(infilename): continue oldbase = os.path.splitext(filename) infile= open(infilename, 'r') newname = infilename.replace('.grf', '.las') output = os.rename(infilename, newname) outfile = open(output,'w')
chenaren.. 30
在open
对源文件是不必要的,因为os.rename
只需要在源和目标路径来完成这项工作.而且,os.rename
总是返回None
,所以调用open
它的返回值是没有意义的.
import os,sys folder = 'E:/.../1936342-G/test' for filename in os.listdir(folder): infilename = os.path.join(folder,filename) if not os.path.isfile(infilename): continue oldbase = os.path.splitext(filename) newname = infilename.replace('.grf', '.las') output = os.rename(infilename, newname)
我简单地删除了两个open
.检查这是否适合您.
在open
对源文件是不必要的,因为os.rename
只需要在源和目标路径来完成这项工作.而且,os.rename
总是返回None
,所以调用open
它的返回值是没有意义的.
import os,sys folder = 'E:/.../1936342-G/test' for filename in os.listdir(folder): infilename = os.path.join(folder,filename) if not os.path.isfile(infilename): continue oldbase = os.path.splitext(filename) newname = infilename.replace('.grf', '.las') output = os.rename(infilename, newname)
我简单地删除了两个open
.检查这是否适合您.
您不需要打开文件来重命名它们,os.rename
只需要它们的路径.还要考虑使用glob模块:
import glob, os for filename in glob.iglob(os.path.join(folder, '*.grf')): os.rename(filename, filename[:-4] + '.las')
这样的东西会将执行目录中以.txt结尾的所有文件重命名为.text
import os, sys for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))): base_file, ext = os.path.splitext(filename) if ext == ".txt": os.rename(filename, base_file + ".text")