我想从一个列表中的元素传递给一个for循环,当然我得到的经典错误“参数1必须是一个字符串不把” - 为os.chdir()功能。传递列表元素的for循环
这里是我的代码,有什么建议,我怎么能找到解决上述错误,仍然通过我的列表中的元素到脚本的其余部分,以便它遍历每个人将不胜感激!
path= ['C:\\DataDownload\Administrative', 'C:\\DataDownload\Cadastral', 'C:\\DataDownload\Development']
for x in path[:]:
os.chdir(path)
#Remove all previous files from the current folder
for file in os.listdir(path):
basename=os.path.basename(file)
if basename.endswith('.DXF'):
os.remove(file)
if basename.endswith('.dbf'):
os.remove(file)
if basename.endswith('.kmz'):
os.remove(file)
if basename.endswith('.prj'):
os.remove(file)
if basename.endswith('.sbn'):
os.remove(file)
if basename.endswith('.sbx'):
os.remove(file)
if basename.endswith('.shp'):
os.remove(file)
if basename.endswith('.shx'):
os.remove(file)
if basename.endswith('.zip'):
os.remove(file)
if basename.endswith('.xml'):
os.remove(file)
完全无关你的问题,它会使你的生活更容易,如果你使用的扩展数组:'一些推广= [“.DXF”,“.DBF”,“名为.kmz”,...,” .XML “]'。然后,你可以这样做'如果有的话(图(拉姆达分机:basename.endswith(EXT),扩展)):os.remove(文件)'或'只是在扩展分机:如果basename.endswith(EXT): os.remove(文件);打破' – 2010-07-12 17:47:03
感谢迈克尔 - 我已经将你的想法“扩展扩展”纳入我的代码 - 更有效率 - 一个伟大的学习对我来说! – Jay 2010-07-12 18:13:48
@迈克尔:'endswith'支持元组作为输入,因此你例如可以简化:'如果basename.endswith(EXTS):鉴于os.remove(FNAME)','exts'是扩展的一个元组。 – SilentGhost 2010-07-12 18:37:52